Ich versuche, ein grundlegendes Objekt zu einem JPanel zu zeichnen, obwohl es nicht zu funktionieren scheint.Java-Zeichnung zu einem JPanel (Debugging)
Ich bin sicher, dass ich etwas tue, falsch mit, wo die Farbe Methode ist
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class testGui {
static colors gc_colors;
static gui gc_gui;
public static void main(String[] args) {
gc_colors = new colors();
gc_gui = new gui();
gc_gui.cv_frame.setVisible(true);
}
public static class colors {
Color cv_ltGrey;
Color cv_mdGrey;
Color cv_dkGrey;
public colors() {
cv_ltGrey = Color.decode("#DDDDDD");
cv_mdGrey = Color.decode("#CCCCCC");
cv_dkGrey = Color.decode("#111111");
}
}
public static class gui {
JFrame cv_frame;
JPanel cv_panel;
JPanel cv_content;
public gui() {
cv_frame = new JFrame();
cv_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cv_frame.setTitle("Test GUI");
cv_frame.setSize(600, 400);
cv_frame.setLayout(new FlowLayout());
cv_panel = new JPanel();
cv_panel.setBackground(gc_colors.cv_ltGrey);
cv_panel.setPreferredSize(new Dimension(500, 300));
cv_frame.add(cv_panel);
cv_content = new content();
cv_panel.add(cv_content);
}
}
public static class content extends JPanel {
public void paint(Graphics graphic) {
super.paint(graphic);
draw(graphic);
}
public void update() {
repaint();
}
public void draw(Graphics graphic) {
Graphics2D graphic2D = (Graphics2D) graphic;
graphic2D.setPaint(gc_colors.cv_ltGrey);
graphic2D.fillRect(10, 10, 100, 100);
}
}
}
Ich habe für meine gui eine Klasse genannt zu werden, die ich ein JPanel bin Zugabe zu (ein helles Grau eins). Welches ich dann versuche, meine Zeichnung zu einer erweiterten JPanel Klasse namens Inhalt hinzuzufügen.
Wenn ich es zwar laufen lasse, scheint es das graue JPanel zu schaffen, das ich will, aber die Zeichnung ist nur ein kleines weißes Quadrat und ich bin nicht sicher, warum.
Aufschalten getPreferredSize von Inhalten verwenden werde und eine geeignete Größe für die Komponente zurückgeben – MadProgrammer
Ich bin werde ehrlich sein Ich habe keine Ahnung, was du meinst – Trent
'Inhalt' erstreckt sich von 'JPanel', die eine Methode namens' getPreferredSize' hat, müssen Sie diese Methode überschreiben, wie Sie die 'Farbe', und geben Sie eine entsprechende Größe zurück für die Komponente, sonst ist es standardmäßig '0x0' – MadProgrammer