2011-06-11 4 views
1

나는 seatingChart의 시뮬레이션으로 버튼의 배열을 만들려고하지만, 프레임에만 나타나는 버튼은 화면에 나타나지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?내 버튼이 보이지 않는 이유는 무엇입니까?

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); 
    } 
} 
  • 의 GUI는 EDT (내 게으름)에 작성해야합니다.
  • 이름에 낙타 상자를 사용하십시오.
  • 이 경우 JFrame 또는 JPanel 중 하나를 확장 할 필요는 없습니다.

소스에 대한 (문서화되지 않은) 변경 사항은 개선되었습니다. 변경 사항 중 일부라도 궁금한 점이 있으면 문의하십시오.

+0

고맙습니다. 내가 올바른 청취자를하고 있는지 확인할 수 있습니까? 좌석 차트를 만들려고 시도하고 그 버튼을 클릭 할 때마다 조치가 수행됩니다. 인덱스를 사용하여 버튼을 참조하고 싶습니다. 다른 JPanel에 다른 버튼 집합을 추가하면 동일한 actionListener를 사용하게됩니다. – dave

관련 문제