【问题标题】:clickbutton event that opens up a new jframe in a separate window to search through information在单独的窗口中打开一个新的 jframe 以搜索信息的 clickbutton 事件
【发布时间】:2011-12-01 17:31:55
【问题描述】:

我想知道如何创建一个方法,在单独的窗口中打开一个新的 jframe,让我可以搜索信息。目前我有一个按钮说单击我,但是,我想输入一个事件,一旦单击它,它将打开一个新窗口,用户可以输入字符串来搜索信息。我应该为 Jframe 创建一个新类吗?任何提示和代码将不胜感激。谢谢!

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

    这取决于您将在第二个窗口中拥有的功能列表,如果功能列表相当扩展,那么最好将其设置为单独的类,即使 JDialog 也不需要 JFrame。

    下面的示例代码显示了如何在单击按钮时打开 JDialog:

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class TestFrameOnFrame extends JFrame implements ActionListener{
    
        public TestFrameOnFrame(){
            JButton button = new JButton("Show New Frame");
            button.addActionListener(this);
            this.add(button);
            this.pack();
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            JDialog dialog = new JDialog(this);
            dialog.setTitle("Search Dialog");
            dialog.add(new JLabel("Just a test"));
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        }
    
        public static void main(String[] args) {
            new TestFrameOnFrame();
        }
    }
    

    【讨论】:

    • 这一行的目的是什么:JFrame frame = new JFrame("Search Frame");?
    【解决方案2】:

    建议:

    • 不要使用第二个 JFrame。而是显示依赖于原始 JFrame 的 JDialog 或 JOptionPane。
    • 您可以使用多个类或在当前类中创建 gui,这取决于事情的复杂程度以及您对以后维护此代码的关心程度。不过,通常最好将不同的工作分开到不同的类别中。
    • 避免子类化顶级窗口,例如 JFrames 和 JDialogs。通常最好让您的代码用于创建 JPanel,然后在需要的任何顶级窗口中使用 JPanel 来显示它们。
    • 请务必学习 Swing 教程,因为在那里可以找到创建该教程所需的所有信息。
    • 就示例代码而言,在本论坛搜索可以找到很多,其中一些甚至是很好的代码。

    【讨论】:

      【解决方案3】:

      根据“第二帧”的复杂性,您可以使用内部类,也可以将其分开。无论哪种方式,只需让按钮上的事件侦听器启动这个新类的实例,它要么是,要么创建一个新的 Jframe,并将其设置为可见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 2012-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多