从单独的类引用Jframe

时间:2015-05-14 18:09:58

标签: java swing user-interface

所以我有一个GUI,我使用"这个初始化。"如下:

public class GUI extends JFrame {

    public static void main(String[] args) {

        GUI gui = new GUI();
        gui.setVisible(true);
        gui.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
    //constructor
    public GUI() {
        this.setPreferredSize(new Dimension(1920, 1080));
        this.getContentPane().setBounds(new Rectangle(0, 0, 1920, 1080));
        this.setBounds(new Rectangle(0, 0, 1920, 1080));
        this.setBackground(Color.WHITE);
        this.setTitle("GUI");
        this.setBounds(0, 0, 1919, 1080);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.getContentPane().setLayout(null);

        etc.
    }
}

我想在GUI类中创建的框架上使用单独的类.setCursor方法。

public class OtherClass {
    public static void OtherClassMethod() {
        *something*.setCursor(...);
    }
}

有没有办法引用我的GUI类中初始化的框架,所以我可以在单独的类中使用setCursor等,或者我是否需要使所有方法引用GUI类中的框架?出于组织原因,我只在一个单独的类中使用setCursor方法,所以如果需要,我可以将它放回主GUI类中,并在那里使用this.setCursor(...)。

此外,如果尝试这样做是不好的编程习惯,我道歉,请告诉我为什么会这样,因为我想从中学习。

根据接受的答案,我改变了我的代码:

public class GUI extends JFrame {

    public static GUI gui;

    public static void main(String[] args) {

        gui = new GUI();
        gui.setVisible(true);
        gui.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
    //constructor
    public GUI() {
        this.setPreferredSize(new Dimension(1920, 1080));
        this.getContentPane().setBounds(new Rectangle(0, 0, 1920, 1080));
        this.setBounds(new Rectangle(0, 0, 1920, 1080));
        this.setBackground(Color.WHITE);
        this.setTitle("GUI");
        this.setBounds(0, 0, 1919, 1080);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.getContentPane().setLayout(null);

        etc.
    }
}

我将保留原始代码以及更改的学习代码。显然,这个问题很容易解决,我有点尴尬,我自己也没有想到,但我马上就不明白了。希望其他人可以从中吸取教训。

1 个答案:

答案 0 :(得分:2)

这是基本的java:

public class GUI extends JFrame {

    public static GUI gui;

    public static void main(String[] args) {

        gui = new GUI();
        gui.setVisible(true);
        gui.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }

现在,只需输入GUI.gui.setCursor(等)

即可