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

使一个类中的JButton打开独立的JDialog类

庄兴发
2023-03-14

我正在创建一个测验,并创建了一个具有JFrame的类,它的作用类似于主菜单。在这个菜单上,我创建了一个JButton,我想打开单独的JDialog(其中包含问题等)。

JDialog是一个名为QuestionDialog.java独立类

这里是我在主菜单JFrame类中的代码,特别是我要打开新JDialog public static void main(String[]args){SwingUtilities.InvokeLater(new Runnable(){public void run(){NewJFrame inst=new NewJFrame();inst.SetLocationRelative(null);inst.SetVisible(true);}});}

 startButton = new JButton();
        getContentPane().add(startButton);
        startButton.setText("Start Quiz");
        startButton.setBounds(454, 239, 65, 23);

这是给出错误的代码

startButton = new JButton();
        getContentPane().add(startButton);
        startButton.setText("Start Quiz");
        startButton.setBounds(454, 239, 65, 23);
        startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent actionevent)
            {
                questionDialog.setVisible(true);
            }
        });

下面是来自seperate JDialog类的代码

package ZillionaireGUI;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class questionDialog extends javax.swing.JDialog {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                questionDialog inst = new questionDialog(frame);
                inst.setVisible(true);
            }
        });
    }

    public questionDialog(JFrame frame) {
        super(frame);
        initGUI();
    }

    private void initGUI() {
        try {
            setSize(400, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    
}

共有1个答案

云昊阳
2023-03-14

你应该这么做。

>

  • 删除JDialog类中的Main方法。应用程序应该只有一个main方法,该方法应该在JFrame类中。

    不要创建新的jframe来将其传递到您的对话框。

    public class MyFrame extends JFrame {
       public MyFrame() {
           JButton but = new JButton("but");
           but.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e) {
                   QuestionDialog dialog = new QuestionDialog(MyFrame.this);
                   dialog.setVisible(true);
               }
           });
       }
    
       public static void main(String[] args) {
           SwingUtilities.invokeLater(new Runnable(){
               public void run() {
                   new MyFrame();
               } 
           });
       }
    }
    
    public class QuestionDialog extends JDialog {
        public QuestionDialog(Frame parent) {
            super(parent);
        }
    }
    

    使用Java命名约定。类名以大写字母开头。
    QuestionDialogQuestionDialog

  •  类似资料:
    • 例如,假设JFrame类称为frame,两个JPanel类称为panel1和Panel2。如果在panel1中点击了一个按钮,你如何告诉框架移除panel1并添加Panel2?

    • 基本上,我想影响公司和个人的地址。地址是独立的实体。 提前致谢

    • 问题内容: 我有一个使用JPA的项目J2SE。在某些JDialogs中,我确实返回并在类的构造函数中填充JTable,JComboBox,JList等。 因此,当我为这些对话框创建任何实例时,有时会很慢。 我认为使用SwingWorker和JProgressbar并创建一个(加载)来打开JDialogs是一个很好的解决方案,但是我不知道该怎么做。 我正在尝试这个。 如何打开JDialog并创建要使

    • 你好,我正在制作一个简单的桌面应用程序,我正在设计用户界面。我正在使用NetBeans快速设计它。我确实看了很多网站和博客来寻找答案,但是找不到正确的答案。我是UI设计新手。您的答复/建议将不胜感激。 问题是: 我在应用程序中有一个JFrame。这个Jframe有几个JPanel,当用户登录应用程序时,这些JPanel被设置为可见/不可见状态。其中两个面板默认设置为不可见状态(我使用了将它们设置为

    • 即使 M600 与手机断开连接,M600 的部分基本功能仍可继续使用。 在独立模式下,您能: 了解时间、查看日期。 使用 Polar 应用程式进行训练。 如果您的智能手表已经接到Wi-Fi网络,请使用应用程式商店。 使用码表。 使用计时器。 查看您当日的时间表。 设置闹钟。 查看您的步数。 查看您的心率。 更改手表表面。 使用飞行模式。

    • 问题内容: 是否可以在JVM中启动和关闭多个H2数据库? 我的目标是通过为每个用户/帐户分配自己的数据库来支持多租户。每个帐户的数据很少。帐户之间的数据永远不会一起访问,比较或分组;每个帐户都是完全独立的。每个帐户每天只能短暂访问一次,一个月只能访问几次。因此,将数据存储在单个数据库中几乎没有什么弊端,但也存在一些严重的弊端。 所以我的想法是,当用户登录特定帐户时,该帐户的数据库已加载。当该用户注