如何在GUI应用程序中使用嵌套面板?

时间:2017-04-28 18:08:01

标签: java user-interface nested jpanel panel

我创建了一个绘图应用程序,让用户可以选择笔颜色,但我的布局有问题。我创建了多个面板但是当我运行它时,所有按钮仍然在一个面板中。有办法解决这个问题吗?

public class DrawingGUI extends JPanel {

private JRadioButton penColor1, penColor2, penColor3, randomPenColor, eraser;
private JButton clearButton;
private static Color defaultColor = Color.BLACK;
private static boolean isRandomSelected = false;
private final static int DIAMETER = 12;
protected static boolean canDraw;
private ArrayList<PointTracker> points;

public DrawingGUI() {
    setBackground(Color.WHITE);
    points = new ArrayList<PointTracker>();

    JPanel drawPanel = new JPanel();

    JLabel instructions = new JLabel("Enter your information:");
    JPanel instructionsPanel = new JPanel();
    instructionsPanel.add(instructions);
    drawPanel.add(instructionsPanel);

    JPanel colorPanel1 = new JPanel();
    penColor1 = new JRadioButton("Red");
    drawPanel.add(penColor1);
    penColor1.addActionListener(new ToolListener());
    drawPanel.add(colorPanel1);

    JPanel colorPanel2 = new JPanel();
    penColor2 = new JRadioButton("Blue");
    drawPanel.add(penColor2);
    penColor2.addActionListener(new ToolListener());
    drawPanel.add(colorPanel2);

    JPanel colorPanel3 = new JPanel();
    penColor3 = new JRadioButton("Yellow");
    drawPanel.add(penColor3);
    penColor3.addActionListener(new ToolListener());
    drawPanel.add(colorPanel3);...(So on)

1 个答案:

答案 0 :(得分:0)

  

所有按钮仍在一个面板中

为什么这是一个问题。这就是我期望发生的事情。

为什么要为每个按钮创建单独的面板?使用面板的重点是逻辑分组。

所以我希望你应该有类似的东西:

JPanel buttonsPanel = new JPanel();
buttonsPanel.add( button1 );
buttonsPanel.add( button2 );
buttonsPanel.add( button3 );

JPanel drawPanel = new JPanel();
drawPanel.add( component1 );
drawPanel.add( component2 );

frame.add(drawPanel, BorderLayout.PAGE_START);
frame.add(buttonsPanel, BorderLayout.PAGE_END);

以上是在框架上“嵌套”两个面板的简单示例。每个面板都可以根据需要使用不同的布局管理器。

有关此方法的工作示例,您可以查看Custom Painting Approaches。这两个代码示例都展示了如何在框架中“嵌套”绘图面板和按钮面板。