如何从其他类访问JFrame? 我正在尝试将JLabel(jlabel_title)添加到我的JFrame(框架)。
public class Frame_Main
{
public static void createWindow()
{
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(400,250));
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame_Menu frame_menu = new Frame_Menu();
frame.setMenuBar(frame_menu.getMenubar());
frame.setLayout(new BorderLayout());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
createTitle();
}
public static void createTitle()
{
//IF abfrage integrierieren ob jlabel leer ist
JLabel jlabel_title = new JLabel("test");
jlabel_title.setBackground(Color.BLUE);
jlabel_title.setFont(new Font("Segoe UI", Font.BOLD, 20));
jlabel_title.setVisible(true);
错误显示在此处:
Frame_Main.createWindow(frame).add(jlabel_title, BorderLayout.NORTH);
}
}
答案 0 :(得分:3)
首先,除非确实需要,否则不要使用静态方法(这里没有理由这样做)。
然后,将JFrame
作为成员添加到您的班级中 - 然后可以通过班级方法访问它:
public class Frame_Main {
private JFrame frame = new JFrame();
public void createWindow() {
// ...
}
public void createTitle() {
// ...
frame.add(jlabel_title, BorderLayout.NORTH);
}
}
在调用代码中,您需要创建Frame_Main
类的实例并调用createWindow()
方法:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Frame_Main mainWindow = new Frame_Main();
mainWindow.createWindow();
}
});
}
(您可以将createWindow()
更改为类似initializeWindow()
的内容,因为这是该方法实际执行的操作)