我在框架上添加了按钮,但它们仍然无法显示

时间:2014-06-08 05:36:04

标签: 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[] 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);

  }
}

当我运行程序时,框架显示但不显示我的按钮或面板。有人可以解释一下我做错了吗?

4 个答案:

答案 0 :(得分:1)

您应该将JPanel ppnl添加到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);

并且,对于正确的布局管理器,请完成此tutorial

答案 1 :(得分:0)

您需要将JPanel添加到JFrame

  f.getcontentpane().add(p);
  f.getcontentpane().add(pnl);

然后在框架上调用setVisible()。

f.setVisible(true);

答案 2 :(得分:0)

它没有显示,因为您在添加按钮之前将框架的可见性设置为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

答案 3 :(得分:0)

您已创建了面板,但忘记在该框架中添加面板,与添加“按钮5”的方式完全相同

尝试将其包含在代码中:

f.add(p);
f.add(pnl);