将JPanel从其他类添加到JPanel

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将JPanel从其他类添加到JPanel相关的知识,希望对你有一定的参考价值。

我想将另一个类的JPanel添加到JPanel:

class FirstPanel extends JPanel
{
private JButton button;

FirstPanel()
{
    setLayout(null);
    setVisible(true);

    button = new JButton();

    button.setBounds(x, y, width, height);
    button.setFocusPainted(false);
    button.setIcon(new ImageIcon(SecondPanel.class.getResource(filePath)));
    button.setBackground(bgColor);
    button.setForeground(Color.white);
    button.setVisible(true);

    Border emptyBorder = BorderFactory.createEmptyBorder();
    button.setBorder(emptyBorder);

    add(button);

    ButtonActionHandler buttonActionHandler = new ButtonActionHandler();

}


public class ButtonActionHandler implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        setVisible(true);
        add(new SecondJPanel());

        new SecondJPanel().setVisible(true);
    }
} }

这是我的第二个JPanel:

class SecondPanel extends JPanel
{
private JButton button;
private JLabel titleLabel;

SecondPanel()
{

    setLayout(null);
    setVisible(true);

    button = new JButton();

    button.setBounds(100, 200, 100, 200);
    button.setFocusPainted(false);
    button.setIcon(new ImageIcon(SecondPanel.class.getResource(filePath)));
    button.setBackground(bgColor);
    button.setForeground(Color.white);
    button.setVisible(true);

    Border emptyBorder = BorderFactory.createEmptyBorder();
    button.setBorder(emptyBorder);

    add(button);
}

}

通过JFrame(来自另一个类)启动第一个面板是有效的,但是第二个JPanel添加到第一个面板却没有。

任何帮助都非常感谢

答案

对不起,你好像不明白我告诉你的是什么。

作文是你的朋友。

我会这样做:

public class JPanel1 extends JPanel {

    private JButton button;

    public JPanel1(ActionListener buttonListener) {
       this.button = new Button("Push me");
       this.button.addActionListener(buttonListener);
       // do what's needed to add the button to the display.
    }
}

public class JPanel2 extends JPanel {

    private JButton button;

    public JPanel2(ActionListener buttonListener) {
       this.button = new Button("Push me");
       this.button.addActionListener(buttonListener);
       // do what's needed to add the button to the display.
    }
}

public class TwoPanelFrame extends JFrame {

    public TwoPanelFrame(JPanel p1, JPanel p2) {
        // add the two panels to your frame and display.
    }
}

以上是关于将JPanel从其他类添加到JPanel的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Jpanel 中的 JTextField 获取值并将其发送到其他 JPanel?

从 Java Swing 中的另一个类访问 JPanel 变量

如何将自定义的 MouseMotionListener 添加到 JPanel?

将处理 3 添加到 Jpanel

JPanel JScrollPanel

从动态添加的 jPanel 中获取文本