当前位置: 首页 > 知识库问答 >
问题:

当我们点击不同的按钮时,其内容会发生变化

顾光明
2023-03-14

我在这里使用Java的Swing来制作一个UI应用程序。我创建了一个JFrame,带有一些按钮。当我点击这个按钮时,我想要一个新的JFrame,在这里有一些不同的内容。但是,我不想在这里加载新的JFrame。

我知道的一种方法是在第一个JFrame中的按钮的actionPerform(ActionEventobj)方法中将第二个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,当我们点击不同的按钮时,它的内容会发生变化。我怎样才能做到这一点?

共有3个答案

商宝
2023-03-14

可以将父类的可见性设置为false。

然后您一次只能获得一个包含所需内容的帧。

您必须在按钮的点击事件中创建帧和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);
    }
    });
}

}

它会帮助你。

你明白我的意思了吗?

杨昆
2023-03-14

您还可以在运行时动态操作JFrame的内容。您可以使用add(…) 删除(…) removeAll(…) 方法来添加和删除内容,就像您在显示框架之前所做的那样。完成后,需要调用修改后容器的revalidate()repaint()方法,以使所有内容稳定下来并正确显示。

然而,我认为正确的解决方案取决于您试图实现的实际概念。如果您想添加或删除几个GUI元素来强调功能,那么正确的方法是按照我所概述的操作容器。但是,如果您希望根据系统状态(不超过2-3)略有不同的GUI,那么CardLayout将是一个更合适的选择

邵耀
2023-03-14

看看CardLayout,这将允许您切换框架的内容:

CardLayout对象是容器的布局管理器。它将容器中的每个组件视为一张卡片。一次只能看到一张卡片,容器充当一堆卡片。添加到CardLayout对象的第一个组件是第一次显示容器时的可见组件。

有关示例,请参见如何使用CardLayout。

 类似资料:
  • 目前,我在尝试用新信息更新我的JFrame时遇到了一个主要问题。我尝试了通常的无效、验证、重新绘制等。 以下是创建JFrame的主要代码: 这是用来切换JFrame的按钮代码:这是一个完全不同的类 现在您会注意到,在makeCenter方法的第一段代码中,注释掉了一些内容。如果我不评论它,信息会发生变化,但每次都会创建一个新窗口。 现在,尽管dispose()当前不在其中,但我将其放在makeCe

  • 当我在设备上运行应用程序时单击增量按钮时,我的应用程序意外地强制执行这是我的activity_main.xml代码 这是我的mainactivity.java文件 这是调试报告05-23 22:14:45.695 297 36-29736/com.orton.birthdayCard E/AndroidRuntime:致命异常:主进程:com.orton.birthdayCard,PID:2973

  • 我有两个s类型的。对于每个都有一个相应的,里面有一个。 我希望单击按钮会产生与单击标签相同的效果:检查相应的输入。 然而,这并没有发生。如下面的代码段所示,悬停并按下按钮确实会触发单选按钮中相应的样式更改,但单击操作不会选择输入,即使简单标签按预期工作。 我已经检查了s是s的合法子代。标签允许短语化内容,按钮是短语化内容,所以那里应该一切正常。 我还尝试将事件侦听器添加到两个按钮的单击事件中,并在

  • 一切正常,应用程序出现了。但当我点击任何切换按钮时,应用程序就会崩溃。 我试过了,但找不到问题。其实我的知识还不够,我是这个领域的新手。所以请帮帮我。 这是查看活动。JAVA 还有这只logcat 2020-03-18 03:16:50.407 31609-31609/? E/lpaper。wallper:运行时设置的未知位_标志:0x8000 2020-03-18 03:17:04.862 31

  • 我想创建弹出与样式组件和添加动画淡入淡出。但问题是,当我通过点击X按钮关闭弹出窗口时,动画不会播放。下面是我的代码: 到{不透明度:1;}`; const fadeOut=keyframes`来自{不透明:0;} 到{不透明度:1;}`; *-webkit-scrollbar-thumb{background-color:#3aa4a4;border-radius:20px;border:3px实

  • 上面的单选按钮代码,但是在选择之后,我需要将特定的单选按钮颜色单独更改为蓝色