java - 从其他类向 JFrame 添加元素
问题描述
我在一个JFrame
创作中有两个课程:
public class Window extends JFrame {
public void createWindow() throws IOException {
setTitle(GeneralValues.PROGRAM_NAME);
setSize(1100, 600);
setResizable(false);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setLayout(null);
setVisible(true);
}
}
在第二个我有一个JLabel
:
public class InitialConfiguration {
Window w = new Window();
public void main() {
JLabel blauncherIcon = new JLabel();
blauncherIcon.setBounds(100, 100, 100, 100);
blauncherIcon.setOpaque(true);
blauncherIcon.setText("Text");
w.add(blauncherIcon);
}
}
我的主要方法:
public class Main {
Window w = new Window();
InitialConfiguration ic = new InitialConfiguration();
public static void main(String[] args) {
w.createWindow();
ic.main();
}
}
我想将类中的标签添加到InitialConfiguration
类中的框架中,Window
但不幸的是,这段代码创建了一个框架,但没有添加InitialConfiguration
类中的标签。可以做到吗?
解决方案
您的问题是,您的Window
. 您InitialConfiguration
有一个成员变量Window
,标签被添加到该变量中。但这与Window
您在Main
课堂上的实例不同。
所以总而言之,您创建并显示窗口,但从不显示您实际添加标签的第二个窗口。
所以总的来说,如果你真的想以这种方式保持你的结构(我建议不要这样做,但你可能有你的理由),将正确的Window
实例作为方法参数传递应该可以解决它。
public class InitialConfiguration {
// Removed second Window here
public void main(Window w) { // rename this method please
JLabel blauncherIcon = new JLabel();
blauncherIcon.setBounds(100, 100, 100, 100); // use layout managers
blauncherIcon.setOpaque(true);
blauncherIcon.setText("Text");
w.add(blauncherIcon);
}
}
还有你的“主要”:
public class Main {
Window w = new Window(); // rename the class Window please
InitialConfiguration ic = new InitialConfiguration();
public static void main(String[] args) {
w.createWindow();
ic.main(w);
}
}
推荐阅读
- java - 如何最小化 Spring Boot 应用程序的 Ram 内存?
- python - 使python程序`gnome-terminal`独立
- alert - 如何进行 moogsoft 与 Sensu 的集成
- html - 使用 ASP.net Core 将 _Layout.cshtml 应用到 .html 页面
- html - 选择文件,更改文件大小,上传到 php 并通过 phpmailer 发送
- r - 使用 dplyr 根据另一个数据表中的值提取一组值
- java - Groovy:如何从 AST 获取静态推断的返回类型
- sql - SQL 名称计数总和,按年份分组
- python - np.array 中的行提取时间
- javascript - 从用户到网站的付款请求