Ich bin in den frühen Phasen des Versuchs, ein Java 2D-Grafik-Malprogramm zu erstellen. Ich verwende ein Flow-Layout und verwende drei Panels. Die ersten beiden sind Reihen von Knöpfen, Kombinationsfeldern usw. und die dritte ist ein großes, weißes, leeres Feld, das zum Malen verwendet wird. Die ersten beiden Panels erscheinen wunderschön, aber die Farbpalette erscheint als kleine weiße Box neben der zweiten Schaltfläche. Jede Hilfe wäre willkommen.JPanel erscheint als eine kleine weiße Box
public class DrawingApp extends JFrame
{
private final topButtonPanel topPanel = new topButtonPanel();
private final bottomButtonPanel bottomPanel = new bottomButtonPanel();
private final PaintPanel paintPanel = new PaintPanel();
public DrawingApp()
{
super("Java 2D Drawings");
setLayout(new FlowLayout());
add(topPanel);
add(bottomPanel);
add(paintPanel);
}
public static void main(String[] args)
{
DrawingApp frame = new DrawingApp();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(750,500);
frame.setVisible(true);
}
}
public class topButtonPanel extends JPanel
{
private final String[] names = {"Line", "Oval", "Rectangle"};
private final JButton undo = new JButton("Undo");
private final JButton clear = new JButton("Clear");
private final JLabel shape = new JLabel("Shape:");
private final JComboBox<String> shapesComboBox = new JComboBox(names);
private final JCheckBox filled = new JCheckBox("Filled");
public topButtonPanel()
{
super();
setLayout(new FlowLayout());
add(undo);
add(clear);
add(shape);
shapesComboBox.setMaximumRowCount(3);
add(shapesComboBox);
add(filled);
}
}
public class bottomButtonPanel extends JPanel
{
private final JCheckBox useGradient = new JCheckBox("Use Gradient");
private final JButton firstColor = new JButton("1st Color");
private final JButton secondColor = new JButton("2nd Color");
private final JLabel lineWidthLabel = new JLabel("Line Width:");
private final JLabel dashLengthLabel = new JLabel("Dash Length:");
private final JTextField lineWidthField = new JTextField(2);
private final JTextField dashLengthField = new JTextField(2);
private final JCheckBox filled = new JCheckBox("Dashed");
public bottomButtonPanel()
{
super();
setLayout(new FlowLayout());
add(useGradient);
add(firstColor);
add(secondColor);
add(lineWidthLabel);
add(lineWidthField);
add(dashLengthLabel);
add(dashLengthField);
add(filled);
}
}
public class PaintPanel extends JPanel
{
public PaintPanel()
{
super();
setBackground(Color.WHITE);
setSize(700,400);
}
}
'public class topButtonPanel JPanel' erstreckt Bitte gemeinsame Java-Nomenklatur lernen (Benennung conve ntionen - z.B. 'EachWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute', es sei denn, es handelt sich um ein 'UPPER_CASE_CONSTANT' und benutze es konsistent. Stellen Sie jedoch fest, dass es keinen Grund gibt, JPanel zu erweitern, da sich keine Funktionalität ändert - verwenden Sie einfach eine Instanz von eins. –