1

所以我正在编写一个小应用程序,需要将一个 JPanel 添加到与另一个 JPanel 相同的区域,并在需要时显示一个 - 也就是按下按钮时,一个消失,另一个显示。一有时间,我会清理帖子,但现在我需要赶时间,以免错过回家的公共汽车。

另外,如果这不可能,请告诉我一种可以复制效果的方法。最好在同一窗口内。

SSCCE 前。进口:

public class Demo implements ActionListener {
    static JButton switch = new JButton("Switch");

    public static void main(String[] args) {
        JFrame disp = new JFrame("Demo");
        disp.setLayout(new BorderLayout());
        disp.add(switch, BorderLayout.NORTH);
        JPanel pan1 = new JPanel();
        pan1.setBackground(Color.RED);
        disp.add(pan1);
        JPanel pan2 = new JPanel();
        pan2.setBackground(Color.GREEN);
        disp.add(pan2);
        disp.setVisible(true);
    }

    void actionPerformed(ActionEvent e) {
        System.out.println(e.paramString());
        //Something to switch the JPanels when "switch" is pressed
    }
}
4

2 回答 2

4

如果我正确理解您的问题,我认为您想要的是使用一个带有 CardLayout 的 JPanel。这反过来又可以容纳其他两个彩色 JPanel。然后,您可以在两者之间切换。然后可以将带有 CardLayout 的 JPanel 添加到您的 BorderLayout.CENTER。

另一种选择是自己管理。保留对 pan1 和 pan2 的引用作为成员变量。然后在执行的操作中,您可以简单地删除 pan1 并添加 pan2。

于 2013-01-15T20:57:43.303 回答
0

这可能是您正在寻找的JFrame.setContentPane()

我认为方法签名几乎是不言自明的。

于 2013-01-15T20:59:24.100 回答