我正在尝试创建模块化MVC swing应用。所以我有一个运行代码的Main
类,一个代表窗口的Frame
类(扩展JFrame
),并且在其中有一个类(扩展{{1} })有我的GUI元素。我的目标是在View需要更改时能够轻松更新/重新绘制JPanel
类。
但是,正如我的代码现在一样,它运行没有错误,它打开一个空框架,但JPanel类中的元素不会显示,我不知道为什么。 - 我知道,很可能是一个noob错误,但我再也看不到了。
所以这是我的主要课程:
Panel
这是JFrame类
package mvc;
public class Main {
public static void main(String[] args)
{
new Frame();
}
}
这里是JPanel
package mvc;
import java.awt.Container;
import javax.swing.JFrame;
public class Frame extends JFrame{
private static int width = 500;
private static int height = 500;
public Frame(){
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container pane = getContentPane();
Panel game = new Panel();
pane.add(game);
pack();
setSize(width, height);
setLocation(100,100);
setVisible(true);
}
}
答案 0 :(得分:3)
我不确定你为什么要这样做......
public Panel(){
Container pane = new JPanel();
b1 = new JButton("Button");
pane.add(b1);
l1 = new JLabel("Label for the button");
pane.add(l1);
}
但您并未将pane
添加到任何内容中,因此屏幕上未显示任何内容
更容易做一些像......
public Panel(){
b1 = new JButton("Button");
add(b1);
l1 = new JLabel("Label for the button");
add(l1);
}
您还应该仅在事件调度线程的上下文中创建和修改UI,有关详细信息,请查看Initial Threads