![](/img/trans.png)
[英]Is it possible to add a image in JFrame but the class is extended with JPanel?
[英]Can't get a class extended on JPanel to show within a JFrame class
我正在尝试创建一个模块化的MVC swing应用。 因此,我有一个运行代码的Main
类,一个代表窗口的Frame
类(扩展了JFrame
),并且其中包含一个包含我的GUI元素的类(扩展了JPanel
)。 我的目标是在需要更改视图时能够轻松更新/重绘Panel
类。
但是,由于我的代码是正确的,因此它运行时没有错误,并且打开了一个空的Frame,但是JPanel类中的元素无法显示,我也不知道为什么。 -我知道,很可能是菜鸟的错误,但是我再也看不到它了。
所以这是我的主要课程:
package mvc;
public class Main {
public static void main(String[] args)
{
new Frame();
}
}
这是JFrame类
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);
}
}
这是JPanel
package mvc;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Panel extends JPanel {
private JButton b1;
private JLabel l1;
public Panel(){
Container pane = new JPanel();
b1 = new JButton("Button");
pane.add(b1);
l1 = new JLabel("Label for the button");
pane.add(l1);
}
}
我不确定为什么要这么做...
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,请查看初始线程以了解更多详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.