【问题标题】:I need to hold this window until the done button has been pressed :/ [closed]我需要按住此窗口,直到按下完成按钮:/ [关闭]
【发布时间】:2013-02-13 23:03:40
【问题描述】:

这里的第一个代码来自我无法弄清楚的主要代码的 prerec。

boolean CompanyLoaded, StartingNum = true;

FirstCheck newwin = new FirstCheck();

public CollectNumbers() { 

        if (StartingNum = true) firstCheck = newwin.FirstCheck(); <----Runs FirstCheck okay

        if (CompanyLoaded = true) LoadCompany();

从这里开始,我将在下面发布我的 FirstCheck 课程。我试过抽象覆盖actionPerformed,我试过线程睡眠,等待,但无法弄清楚如何让我的FirstCheck()方法等到actionPerformed()返回我的字符串(Int)。任何帮助将不胜感激!

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

import java.io.*;

import java.util.*;

abstract class FirstCheck extends JFrame implements ActionListener {

    static int num;
    static boolean bnum = true;
    JTextField NumberEntry;

    Toolkit   tools   = Toolkit.getDefaultToolkit();
    Dimension windowLocVar = tools.getScreenSize(); 


    public int FirstCheck() {

        JFrame frame = new JFrame();

        NumberEntry = new JTextField();

        JButton Done = new JButton("Done");
        Done.addActionListener(this);

        JLabel label = new JLabel("Starting Check Number?");
        label.setVerticalTextPosition(JLabel.BOTTOM);  
        label.setHorizontalTextPosition(JLabel.CENTER);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3,1));
        panel.add(NumberEntry);
        panel.add(label);
        panel.add(Done); 

        frame.add(panel);                       
        frame.pack();                                      
        frame.setVisible(true);                            
        frame.setSize(250,150);                            
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setLocation(windowLocVar.width/2-300,windowLocVar.height/2-100);


        //try {
        //  Thread.sleep(5000);
        //  } 
        //catch(InterruptedException e) {
        //  // Restore the interrupted status
        //  Thread.currentThread().interrupt();
        //  }



    }



    public int actionPerformed(ActionEvent e) {
               bnum = false;
               num = Integer.parseInt(NumberEntry.getText());
               return num;

    }


    }

【问题讨论】:

    标签: java swing user-interface actionlistener


    【解决方案1】:

    JDialog frame = new JDialog((Frame)null, true)代替JFrame frame = new JFrame()

    这将创建一个模态对话框,该对话框将在frame.setVisible(true) 处阻止代码执行,直到对话框关闭。

    查看How to use dialogs 了解更多信息。

    在您的actionPerformed 方法中,您需要存储一个“返回”值,一旦对话框关闭,您的应用程序就可以查询该值...

    public void actionPerformed(ActionEvent e) {
        bnum = false;
        num = Integer.parseInt(NumberEntry.getText());
        Object source = e.getSource();
        if (source instanceof Component) {
            // Close the dialog....
            SwingUtilities.getWindowAncestor((Component)source).dispose();
        }
    }
    

    更新

    同样,您也可以改用JOptionPane...

    看看

    举几个例子

    【讨论】:

    • 感谢您的建议!我会仔细查看您提供的链接!
    • @JAKOBBERRY 知识很强大,玩得开心;)
    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多