LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 896|回复: 7

如何设计一个等待用户输入的窗体?

[复制链接]
发表于 2005-3-2 13:51:06 | 显示全部楼层 |阅读模式
:help
我要做一个窗体,
其中要求用户设置一些东西,
通过按确定或按取消,来决定接下来程序做什么。

我做了一个窗体,
其中有需要用户设置的4个组件(2个JTextField、1个JComboBox和一组JRadioButton),
当然还有两个按钮,分别是确定和取消。

窗口出现了,
可是程序并没有等待我对其设置,
(即,也就没有返回是确定还是取消)
而是继续运行出现窗口下面的语句了,
必定报错!

怎样是程序等待我设置完了,
也就是有返回值了,
再继续下面的程序。  :ask
发表于 2005-3-2 15:51:01 | 显示全部楼层
你open窗口的语句是什么?
回复 支持 反对

使用道具 举报

发表于 2005-3-2 15:58:41 | 显示全部楼层
swing中最简单的创建窗口程序如下,你可以参考一下:
import javax.swing.*;

/**
* Created by IntelliJ IDEA.
* User: jacky
* Date: 2005-3-2
* Time: 15:54:58
* To change this template use File | Settings | File Templates.
*/
public class SwingTest {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Test");
        frame.setSize(200, 200);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.show();
    }
}
回复 支持 反对

使用道具 举报

发表于 2005-3-2 15:59:46 | 显示全部楼层
怎么才能够加入缩进信息:-(
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-2 20:05:25 | 显示全部楼层
Post by hua_jacky1977
swing中最简单的创建窗口程序如下,你可以参考一下:
import javax.swing.*;

/**
* Created by IntelliJ IDEA.
* User: jacky
* Date: 2005-3-2
* Time: 15:54:58
* To change this template use File | Settings | File Templates.
*/
public class SwingTest {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Test");
        frame.setSize(200, 200);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.show();
    }
}

我也是这样写的,
就是再加上其他组件和监听器,
在激活事件的方法里写上了代码。

代码类似下面的内容:

public class SwingTest {
     int response = -1;
     public SwingTest(){
        JFrame frame = new JFrame("Test");
        frame.setSize(200, 200);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public int showFrame(){
        frame.show();
        return response;
    }
    void actionPerformed(ActionEvent e) {
       if (按了确定)
          this.response = 1;
       else
          this.response = 0;
    }
}
class A{
     public A(){
          SwingTest st = new SwingTest ();
          int i = st.showFrame();                     //窗体被现实,但是马上执行了下面的语句。 :confused:
          System.out.println("response; " + i);  //永远是-1,
     }
}
回复 支持 反对

使用道具 举报

发表于 2005-3-2 20:48:30 | 显示全部楼层
我终于明白了你的意思,你是想要(Modal)模式的窗口效果,像是一般的对话框一样,对把。这个效果jframe不支持,只有从dialog这个类继承下来的类才有这个功能,例如jdialog就有这样一个构造函数JDialog(Frame owner, boolean modal),其中第二个参数如果为true就是你要的那种"停住的窗口“:-)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-3 09:21:45 | 显示全部楼层
Post by hua_jacky1977
我终于明白了你的意思,你是想要(Modal)模式的窗口效果,像是一般的对话框一样,对把。这个效果jframe不支持,只有从dialog这个类继承下来的类才有这个功能,例如jdialog就有这样一个构造函数JDialog(Frame owner, boolean modal),其中第二个参数如果为true就是你要的那种"停住的窗口“:-)


再次感谢您的帮助,
我这就去试试。 :thank

我都要使最后的杀手锏了:
在main线程中,
创建一个JFrame,同时把当前线程阻塞,
JFrame得到数据后,唤醒刚才的线程并返回数据。
回复 支持 反对

使用道具 举报

发表于 2005-3-3 11:52:51 | 显示全部楼层
别客气:-)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表