Java 如何让JPanel在同一地区的其他人面前表现出色

Java 如何让JPanel在同一地区的其他人面前表现出色,java,swing,awt,jpanel,layout-manager,Java,Swing,Awt,Jpanel,Layout Manager,因此,我正在编写一个小应用程序,需要将一个JPanel添加到另一个JPanel的同一区域,并在需要时显示一个JPanel——也就是当按下一个按钮时,一个消失,另一个出现。只要我有时间,我会清理邮件,但现在我有点需要赶时间,这样我就不会错过回家的巴士 此外,如果这是不可能的,请告诉我一种方法,我可以复制的效果。最好在同一窗口内 SSCCE出口商品: public class Demo implements ActionListener { static JButton switch = n

因此,我正在编写一个小应用程序,需要将一个JPanel添加到另一个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
    }
}

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


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

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


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

这可能就是您要查找的内容


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

这可能就是您想要的



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

您想更改按钮的可见性吗?我很抱歉。前面的注释/编辑:P这似乎是一个SSCCE ex进口。不算是一个SSCCE,但第二好的事情。正如我在帖子中所说,我有点匆忙。我没有想到要包括进口。。。我的错:)@AndrewThompson经过这么长时间,我才意识到你制作这个网页是为了描述并试图推广“SSCE”一词。。。干得好!非常感谢。我认为,通过这个简短的例子,这些年来帮助了很多人,希望将来能帮助更多人您想更改按钮的可见性吗?非常抱歉。前面的注释/编辑:P这似乎是一个SSCCE ex进口。不算是一个SSCCE,但第二好的事情。正如我在帖子中所说,我有点匆忙。我没有想到要包括进口。。。我的错:)@AndrewThompson经过这么长时间,我才意识到你制作这个网页是为了描述并试图推广“SSCE”一词。。。干得好!非常感谢。我认为,通过这个简短的例子,这些年来帮助了很多人,希望将来能帮助更多人别再说最后一句话了。因为在JFrame上设置layoutManager是在contentpane上设置它的快捷方式。顺便说一句,JFrame/Contentpane的默认布局管理器是BorderLayout。他们在Java1.5中改变了这一点。在1.4中,必须调用getContentPane().setLayout()。我想这说明了我做Swing已经有多长时间了。CardLayout是否仍然可以处理多个变量?一个指向教程或javadocs的链接也太棒了。是的,卡片布局基本上就像一副闪存卡。您添加的每个组件都可以有完全不同的内容,它将所有组件的大小调整为相同的大小,并允许您使用first()、next()、previous()和show()等方法在它们之间切换。它非常适合实现“向导”类型的交互。你能想到一些关于CardLayouts的好教程吗?我看过Javadoc,但它们非常迟钝,很难使用。请不要再说最后一句话。因为在JFrame上设置layoutManager是在contentpane上设置它的快捷方式。顺便说一句,JFrame/Contentpane的默认布局管理器是BorderLayout。他们在Java1.5中改变了这一点。在1.4中,必须调用getContentPane().setLayout()。我想这说明了我做Swing已经有多长时间了。CardLayout是否仍然可以处理多个变量?一个指向教程或javadocs的链接也太棒了。是的,卡片布局基本上就像一副闪存卡。您添加的每个组件都可以有完全不同的内容,它将所有组件的大小调整为相同的大小,并允许您使用first()、next()、previous()和show()等方法在它们之间切换。它非常适合实现“向导”类型的交互。你能想到一些关于CardLayouts的好教程吗?我看过javadoc,但它们非常迟钝,很难使用。