为什么我的按钮没有显示出来?

为什么我的按钮没有显示出来?

问题描述:

我想创建一个按钮阵列作为一个座位图的模拟,但按钮不会显示在屏幕上只有框架出现。我究竟做错了什么?为什么我的按钮没有显示出来?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class guiCreator extends JFrame 
{ 
    public guiCreator() 
    { 
     setTitle("Seats"); 
     setSize(500, 600); 
     addWindowListener(new WindowAdapter() 
      { public void windowClosing(WindowEvent e) 
       { System.exit(0); 
       } 
      }); 

      Container contentPane = getContentPane(); 
      contentPane.add(new seatingPanel()); 
     setVisible(true); 
    } 

} 

class seatingPanel extends JPanel implements ActionListener 
{ 
    public seatingPanel() 
    { 
     setLayout(new BorderLayout()); 

     JPanel panel4seating = new JPanel();//creating a grid panel 
     panel4seating.setLayout(new GridLayout(4, 10));//setting the layout of the grid panel 

     JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray 
     for (int i = 0; i < 40; i++) 
     { 
      seats[i] = new JButton();//creating the buttons 
      seats[i].addActionListener(this); 
      panel4seating.add(seats[i]); 
     } 
    } 

    @Override 
    public void actionPerformed(ActionEvent evt) 
    { 


    } 
    //main 
    guiCreator flightSeats = new guiCreator(); 

你创造seatingPanel的构造一个新的JPanel,但你不能将它添加到seatingPanel本身,因此它不会显示在所有。

尝试将其添加到seatingPanel的布局。

(或者废除完全是子面板 - 设置网格布局和按钮直接向您的seatingPanel

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class GuiCreator extends JFrame 
{ 
    public GuiCreator() 
    { 
     super("Seats"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Container contentPane = getContentPane(); 
     contentPane.add(new SeatingPanel()); 

     pack();  

     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new GuiCreator(); 
    } 
} 

class SeatingPanel extends JPanel 
{ 
    public SeatingPanel() 
    { 
     super(new BorderLayout()); 

     JPanel panel4seating = new JPanel();//creating a grid panel 
     panel4seating.setLayout(new GridLayout(4, 10));//setting the layout of the grid panel 

     JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray 
     for (int i = 0; i < 40; i++) 
     { 
      seats[i] = new JButton();//creating the buttons 
      //better to set the preferred size of the button 
      seats[i].setPreferredSize(new Dimension(50,25)); 
      panel4seating.add(seats[i]); 
     } 

     add(panel4seating, BorderLayout.CENTER); 
    } 
} 
  • 图形用户界面应在EDT(我的懒惰)创建。
  • 使用骆驼案件名称。
  • 在这种情况下,没有必要扩展JFrameJPanel

对源代码的其他(无证)更改是改进。如果您对更改的任何部分有疑问,请询问。

+0

非常感谢你的工作?你能检查我是否正在做动作监听器吗?即时通讯试图创建一个座位图,每当按钮被点击一个动作执行。我想使用索引来引用按钮。如果我用另一组按钮添加另一个JPanel,我将使用相同的actionListener – dave 2011-06-11 11:08:01