当我们点击不同的按钮时,其内容会发生变化的JFrame
我在这里使用Java's Swing
来制作UI应用程序。 我有一个创建了一个JFrame,带有一些按钮。 当我点击这个按钮时,我想要一个在这个地方有一些不同内容的新JFrame。 但是,我不想在这里加载新的JFrame。
我知道一种方法是在第一个JFrame中按钮的actionPerformed(ActionEvent obj)
方法中将第二个JFrame的可见性设置为True。 但它再次加载一个新的JFrame,我不希望这样。
public class FirstUI extends JFrame { JButton but1; public FirstUI(){ but1= new JButton("Click here"); add(but1); XYZ obj= new XYZ(): but1.addActionListener(obj); } public class XYZ implements ActionListener{ public void actionPerformed(ActionEvent obj1){ // WHAT TO DO HERE } } }
我只想要一个JFrame,当我们点击不同的按钮时,其内容会发生变化。 我怎样才能做到这一点?
看看CardLayout
,这将允许切换框架的内容:
CardLayout对象是容器的布局管理器。 它将容器中的每个组件视为卡片。 一次只能看到一张卡片,而容器则充当一叠卡片。 添加到CardLayout对象的第一个组件是首次显示容器时的可见组件。
有关示例,请参见如何使用CardLayout 。
您还可以在运行时动态操作JFrame
的内容。 您可以使用add(...)
, remove(...)
, removeAll(...)
方法添加和删除内容,就像显示框架之前一样。 完成后,您需要调用已修改容器的revalidate()
和repaint()
方法,以使所有内容稳定下来并正确显示。
但是我认为正确的解决方案取决于您尝试实施的实际概念。 如果您想添加或删除几个GUI元素以强调function,那么正确的方法是按照我的概述操作容器。 但是如果你想要稍微不同的GUI取决于系统状态(不超过2-3),那么CardLayout
将是一个更适合的选择
您可以设置父类false的可见性。
然后,您一次只能获得一个包含所需内容的Frame。
您必须在Button的click事件中创建框架的静态对象和setVisible(fase)。
防爆。
public class demo { static JFrame jf; public static void main(String a[]) { JButton b=new JButton("OK"); JPanel jp=new JPanel(); jf=new JFrame(); jf.setVisible(true); jf.setSize(200,200); jf.add(jp); jp.add(b); b.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { jf.setVisible(false); JFrame f= new JFrame(); f.setSize(200,200); f.setVisible(true); } }); }
}
它会帮助你。
你明白了吗?
一种方法是更改JFrame的内容窗格。 这基本上是一个JPanel。 你可以通过frame.setContentPane(
来做到这frame.setContentPane(
第二种方法是做@Peter Lang所做的事。 这就是使用可以更改不同内容组的布局管理器。