我编写了一个方法来创建一个表单,然后在main中创建一些其他命令。(java)
package pak2;
import javax.swing.*;
public class form6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jframe = new JFrame();
JButton jButton = new JButton("JButton");
jframe.getContentPane().add(jButton);
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
System.out.println("test***ok");//testtttttttttttttt
}
}
我想执行“System.out.println(”test *** ok“);”之后,表格将被关闭。 但是当我运行程序时,在我输入表单信息之前,执行其他命令! 表单正在运行时,执行其他命令!我怎么设置它。
答案 0 :(得分:1)
你对此的看法是错误的。
以下是评论示例:
public class Form2 {
public static void main(String[] args) {
final JFrame jframe = new JFrame();
final JButton jButton = new JButton("JButton");
/**
* Once you create a JFrame, the frame will "listen" for events.
* If you want to do something when the user clicks a button for example
* you need to add an action listener (an object that implements ActionListener)
*
* One way of doing this is by using an anonymous inner class:
*/
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(jButton)){
jframe.dispose();
System.out.println("Button clicked!");
}
}
});
jframe.getContentPane().add(jButton);
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// displaying the form will NOT block execution
jframe.setVisible(true);
System.out.println("test***ok");// testtttttttttttttt
}
}
答案 1 :(得分:1)
在继续之前,您需要了解有关Swing和Frames的两件重要事项:
SwingUtilities.invokeLater
和SwingUtilities.invokeAndWait
正确执行此操作。JFrame
是独立元素。使一个可见将不会阻止调用线程。但是,如果这是您想要做的,那么使用JDialog
。对话框用于阻止和等待用户输入,如果你创建一个模态对话框,使其可见将阻止调用线程(如果你设置父Frame
或{{1那么你可以让它保持在最顶层)。一个很好的例子是Dialog
(试一试!)除此之外,以及JOptionPane
扩展JDialog
而不是Dialog
的事实,它几乎是相同的,你可以在基础对话框中添加你想要的任何元素。一些示例代码:
Frame
我希望能回答你的问题。 :)
答案 2 :(得分:0)
在你的代码中,main()函数是调用函数,form6()是被调用函数。从main()函数调用form6()函数后,它返回main()函数。请记住,在执行被调用函数后,控件总是返回到调用函数。
答案 3 :(得分:0)
我不确定你的表单背后的实现是什么,但如果你不希望以后的代码立即执行,你可能需要它来阻止输入,也许使用Scanner?