![](/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.