use*_*543 2 java swing jpanel jframe
我使用以下代码在 JPanel 内放置标签,但 JPanel 没有出现(相反,只有一个空白的 JFrame 出现)。
下面是创建 JFrame 实例的类。
import java.awt.FlowLayout;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args){
WindowContents window = new WindowContents();
window.setSize(600, 400);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是用于设置 JFrame 内容的类。
import javax.swing.*;
import java.awt.*;
public class WindowContents extends JFrame {
JLabel label1;
JLabel label2;
JLabel label3;
JPanel panel1;
public WindowContents(){
super("Label Display 2.0");
panel1 = new JPanel();
panel1.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 40));
panel1.setVisible(true);
label1 = new JLabel("Label1");
panel1.add(label1);
label2 = new JLabel("Label2");
panel1.add(label2);
label3 = new JLabel("Label3");
panel1.add(label3);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何想法如何使 JPanel 内容出现?谢谢你。
如何使 JPanel 内容出现?
在框架中添加面板。
public WindowContents(){
super("Label Display 2.0");
panel1 = new JPanel();
...
add(panel1);
}
Run Code Online (Sandbox Code Playgroud)
笔记:
使用frame.pack()而不是frame.setSize()根据组件的首选尺寸适合组件。
没有必要打电话 panel1.setVisible(true);
frame.setVisible(true)添加所有组件后,最后调用即可。
喜欢组合胜过继承。而不是扩展JFrame使它成为WindowContents类的成员。
使用SwingUtilities.invokeLater()或EventQueue.invokeLater() 确保正确初始化EDT。
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |