2011-06-11 66 views
1

我想創建一個按鈕陣列作爲一個座位圖的模擬,但按鈕不會顯示在屏幕上只有框架出現。我究竟做錯了什麼?爲什麼我的按鈕沒有顯示出來?

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

回答

1

你創造seatingPanel的構造一個新的JPanel,但你不能將它添加到seatingPanel本身,因此它不會顯示在所有。

嘗試將其添加到seatingPanel的佈局。

(或者廢除完全是子面板 - 設置網格佈局和按鈕直接向您的seatingPanel

2
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

相關問題