首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDialog setVisible

JDialog setVisible
EN

Stack Overflow用户
提问于 2015-01-28 11:19:45
回答 1查看 2.5K关注 0票数 0

我有两个类: jDialog类和JFrame类

当我单击JFrame中的一个按钮时,它调用jDialog类并获取jDialog内textfield上的文本,并将其设置为另一个变量。这是伪代码

代码语言:javascript
复制
class JFrame {
  private jDialog jd;
  private JButton b;

  public JFrame(){

  b actionListener {
    jd = new jDialog();
    jd.setModal(true);
    jd.setVisible(true);

    String someString = jd.getString();

    checkIfExists(someString);
   }
     }
       }

 public void checkIfExists(String someString){

    if(someString exists) {
       JOptionPane.showMessageDialog(null,"String exists);
       jd.setVisible(true);

    } else {
        save someString
        jd.setVisible(true);
    }
  }

代码语言:javascript
复制
 class jDialog {
 private JButton a;
 private String s = "";  
 private JTextField t;

   public jDialog{

     a actionListener {
     s = t.getText();
      setVisible(false);
     }
        }

   public String getString() {
   return s;
   }
}

当我输入一个存在的字符串时,它会提示JOptionPane它是存在的,但是程序只流一次。当我尝试编辑textfield时,它不会返回到字符串的“检查”(如果它存在的话),而是停止在'setVisible(false)‘上的’actionListener‘在'jDialog类’中使用system.out跟踪它。(同样适用于!存在,它只保存一次,当我尝试保存另一个不存在的字符串时,它将停止)

知道如何保持jDialog运行吗?我只使用setVisible()来隐藏它,而不是hide ();

EN

回答 1

Stack Overflow用户

发布于 2015-01-28 11:33:31

当我尝试编辑textfield时,如果它存在,它就不会返回到字符串的“检查”

这是因为checkIfExists(someString)是在b侦听器中完成的,该监听器实例化一个新的jDialog(),立即获取字段中的字符串并执行检查。

您应该只实例化一个jDialog (在JFrame代码中):

代码语言:javascript
复制
class JFrame {
    private jDialog jd = new jDialog();

b侦听器集中,jd对象可见(并最终重置JTextField的内容):

代码语言:javascript
复制
b actionListener {
    jd.setVisible(true);

a侦听器(在jDialog类中)中执行检查:

代码语言:javascript
复制
a actionListener {
    checkIfExists(t.getText());
    setVisible(false);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28190930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档