как обнаружить видимое другого класса jframe - PullRequest
2 голосов
/ 27 декабря 2011

скажем

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 и получить строку dir, используя другой класс? как

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 ]

3 голосов
/ 27 декабря 2011

Если вы хотите проверить, отображается ли DirChooser на экране или нет, то вы можете использовать это inst.isShowing();, которое может вернуть boolean.

Кроме того, чтобы прочитать переменную из первого класса во втором классе, просто сделайте ссылку на объект первого класса во втором классе и получите доступ к переменной (общедоступной или защищенной; внутри того же пакета или из суперкласса), например System.out.println(firstClassObject.variableName. Надеюсь, что это может помочь. Привет

1 голос
/ 28 декабря 2011
..
public class Dirchooser extends JFrame {
..

1-й, измените это на ..

public class DirChooser extends JPanel {

Который изменяет рамку на панель и дает правильное имя класса. Затем поместите эту панель в модальное JDialog.

Добавьте метод к DirChooser вдоль строк getDirPath() и вызовите этот метод строкой кода после вызова modalDialog.setVisible(true).

1 голос
/ 27 декабря 2011

Используйте слушателя, и пусть DirChooser перезвонит вам, когда он будет закончен.Это способ Java сделать это, см. «Шаблоны проектирования».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...