Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在一个框架中添加了按钮,但它们仍然赢了';我没有出现_Java_Button_Jframe_Jpanel - Fatal编程技术网

Java 我在一个框架中添加了按钮,但它们仍然赢了';我没有出现

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

我正在编写一个程序,该程序执行以下操作: 创建框架并将其布局设置为FlowLayout。 *创建两个面板并将其添加到框架中。 *每个面板包含三个按钮。面板使用FlowLayout。这是我的密码:

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);