有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java clickbutton事件,在单独的窗口中打开一个新的jframe来搜索信息

我想知道如何创建一个方法,在一个单独的窗口中打开一个新的jframe,允许我搜索信息。现在我有一个按钮,上面写着click me,然而,我想把它放在一个事件中,一旦它被点击,它将打开一个新窗口,用户可以输入一个字符串来搜索信息。我应该为Jframe创建一个新类吗?任何提示和代码都将不胜感激。谢谢


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    建议:

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

    这取决于您将在第二个窗口中使用的功能列表,如果功能列表已完全扩展,那么最好将其作为一个单独的类,而且即使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();
        }
    }