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

时间:2011-12-01 17:31:56

标签: java swing jframe

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

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:2)

建议:

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

答案 2 :(得分:0)

根据此“第二帧”的复杂程度,您可以使用内部类,或将其分开。无论哪种方式,只需让按钮上的事件监听器激活这个新类的实例,该实例可以是或创建一个新的Jframe并将其设置为可见。