Java 我在一个框架中添加了按钮,但它们仍然赢了';我没有出现
我正在编写一个程序,该程序执行以下操作: 创建框架并将其布局设置为FlowLayout。 *创建两个面板并将其添加到框架中。 *每个面板包含三个按钮。面板使用FlowLayout。这是我的密码:Java 我在一个框架中添加了按钮,但它们仍然赢了';我没有出现,java,button,jframe,jpanel,Java,Button,Jframe,Jpanel,我正在编写一个程序,该程序执行以下操作: 创建框架并将其布局设置为FlowLayout。 *创建两个面板并将其添加到框架中。 *每个面板包含三个按钮。面板使用FlowLayout。这是我的密码: import java.awt.*; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JPanel; class Flow{ public static void main(String[] ar
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
class Flow{
public static void main(String[] args){
JFrame f = new JFrame("Testing out these JPanels");
f.setSize(400, 100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setLayout(new FlowLayout());
JButton b = new JButton("button 1");
JButton butt = new JButton("button 2");
JButton bug = new JButton("button 3");
JButton button = new JButton("button 4");
JButton button5 = new JButton("button 5");
JButton button6 = new JButton("button 6");
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.setVisible(true);
p.setSize(200, 100);
JPanel pnl = new JPanel();
pnl.setLayout(new FlowLayout());
pnl.setSize(200,100);
p.add(b);
p.add(butt);
p.add(bug);
pnl.add(button5);
pnl.add(button);
pnl.add(button6);
f.add(button5);
}
}
当我运行程序时,显示的是框架,但不是我的按钮或面板。有人能解释一下我做错了什么吗?你应该把
JPanel
p
和pnl
添加到JFrame
// f.add(button5); Comment this line button5 is already added to pnl
// Now add the two panel with JFrame.
f.add(p);
f.add(pnl);
并且,为了获得合适的布局管理器,请仔细阅读此内容。您需要将JPanel添加到JFrame中
f.getcontentpane().add(p);
f.getcontentpane().add(pnl);
然后在帧上调用setVisible()
f.setVisible(true);
它不会显示,因为在添加按钮之前,您将帧的可见性设置为
true
,因此它只渲染没有按钮的帧,在重新调整JFrame大小时,它将显示按钮,因为它再次渲染
解决方案:
添加按钮后设置框架的可见性
JFrame f = new JFrame("Testing out these JPanels");
f.setSize(400, 100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setLayout(new FlowLayout());
JButton b = new JButton("button 1");
JButton butt = new JButton("button 2");
JButton bug = new JButton("button 3");
JButton button = new JButton("button 4");
JButton button5 = new JButton("button 5");
JButton button6 = new JButton("button 6");
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.setVisible(true);
p.setSize(200, 100);
JPanel pnl = new JPanel();
pnl.setLayout(new FlowLayout());
pnl.setSize(200,100);
p.add(b);
p.add(butt);
p.add(bug);
pnl.add(button5);
pnl.add(button);
pnl.add(button6);
f.add(button5);
f.setVisible(true); //relocated here
您已经创建了面板,但忘记在该框架中添加面板,与添加“按钮5”的方式完全相同 尝试在代码中包含以下内容:
f.add(p);
f.add(pnl);