我的代码出了什么问题?我的按钮和标签没有出现。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class HelloPanelLabel extends JFrame {
public static void main(String[] args) {
new HelloPanelLabel(); // creates an instance of frame class
}
public HelloPanelLabel() {
this.setSize(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Hello World!");
this.setVisible(true);
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension d= tk.getScreenSize();
int x=(d.height/2);
int y=(d.width/2);
this.setLocation(x, y);
//JPanel panel1 = new JPanel();
JLabel label1 = new JLabel("hello, world");
//panel1.add(label1);
JButton button1 = new JButton("Click me!");
//panel1.add(button1);
this.setVisible(true);
}
}
答案 0 :(得分:1)
您需要设置layout并将您的组件添加到框架中。
setLayout(new FlowLayout());
//JPanel panel1 = new JPanel();
JLabel label1 = new JLabel("hello, world");
add(label1);
//panel1.add(label1);
JButton button1 = new JButton("Click me!");
add(button1);
//panel1.add(button1);
this.setVisible(true);
与所述评论一样,您必须致电pack()
。但是,如果要定义更复杂的布局,则必须创建更复杂的布局。
答案 1 :(得分:1)
未显示JButton
和JLabel
的原因是您尚未将包含这两个组件的JPanel
添加到JFrame
。您只需要稍加修改在你的代码中。这是:
panel1.add(label1);
JButton button1 = new JButton("Click me!");
panel1.add(button1);
getContentPane().add(panel1);//Add to ContentPane of JFrame
this.setVisible(true);
并删除您计划中的上一行this.setVisible(true)
。
答案 2 :(得分:0)
如果您想为组件使用JPanel
public class HelloPanelLabel extends JFrame {
public static void main(String[] args) {
new HelloPanelLabel().setVisible(true);
}
public HelloPanelLabel() {
//The same as setTitle.
super("Hello World!");
JPanel panel1 = new JPanel();
JLabel label1 = new JLabel("hello, world");
panel1.add(label1);
JButton button1 = new JButton("Click me!");
panel1.add(button1);
add(panel1);
//Size the frame to fit the components
pack();
//Center the frame.
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
或者您可以将它们直接添加到contentPane
的{{1}}。
JFrame