如何检测另一个jframe类的可见性

时间:2011-12-27 10:24:47

标签: java swing

让我们说

public class Dirchooser extends JFrame {
    protected String dir;
    ...
    private AbstractAction getGetDirAction() {
        if (getDirAction == null) {
            getDirAction = new AbstractAction("OK", null) {
                public void actionPerformed(ActionEvent evt) {
                dir = dirPathTextField1.getText();
                setVisible(false);}};}
return getDirAction;}}

如何检测Dirchooser的可见性并使用另一个类获取字符串目录? 像

public class Run {
    public static void main(String[] args) throws IOException {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            inst = new DirChooser();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);}});
//if inst is not visible,

//sysout string dir which in inst
        }
    }

3 个答案:

答案 0 :(得分:3)

如果您想检查屏幕上是否显示DirChooser,则可以使用可以返回inst.isShowing();的{​​{1}}。

此外,要从第二个类中的第一个类读取变量,只需引用第二个类中第一个类的对象并访问变量(public或protected;在同一个包内或从超类中),如boolean。希望能有所帮助。此致

答案 1 :(得分:1)

使用听众,让DirChooser在完成后给你回电话。这是Java的做法,请参阅“设计模式”。

答案 2 :(得分:1)

..
public class Dirchooser extends JFrame {
..

1,将其更改为..

public class DirChooser extends JPanel {

将框架更改为面板,并给出类名称正确的大小写。然后,将该面板放在模态JDialog中。

DirChooser的行中向getDirPath()添加方法,并在调用modalDialog.setVisible(true)后将该方法调用为代码行。