2012-03-29 6 views
1

간단한 GUI를 만들려면이 코드가 있어야하며 프레임에 GUI 구성 요소를 표시하려고합니다. 그러나 프로그램을 실행하면 프레임 만 JTable과 같은 구성 요소를 표시하지 않고 표시됩니다.Java - GUI 구성 요소가 표시되지 않습니다.

왜 그런가?

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

public class GUI extends JFrame { 
    public void buildGui() { 
     JFrame frame = new JFrame("Hotel TV Scheduler");  
     frame.setVisible(true); 

     Container contentPane = frame.getContentPane(); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new BorderLayout()); 

     JPanel listPanel = new JPanel(); 
     listPanel.setLayout(new FlowLayout()); 

     JTable chOneTable = new JTable(); 
     JTable chTwoTable = new JTable(); 
     JTable listTable = new JTable(); 

     listPanel.add(chOneTable); 
     listPanel.add(chTwoTable); 
     listPanel.add(listTable); 

     contentPane.add(listPanel); 
    } 
} 

답변

3

당신은 JTables에 preferredSize()을 설정하고 이후 pack()을 수행해야합니다.

편집 :

pack()setVisible(true)을 움직였다. 이것은 order which is used by Sun/Oracle입니다.

public class GUI extends JFrame { 
    public void buildGui() { 
     JFrame frame = new JFrame("Hotel TV Scheduler"); 

     Container contentPane = frame.getContentPane(); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new BorderLayout()); 

     JPanel listPanel = new JPanel(); 
     listPanel.setLayout(new FlowLayout()); 

     Dimension d = new Dimension(100, 100); 

     JTable chOneTable = new JTable(); 
     chOneTable.setPreferredSize(d); 

     JTable chTwoTable = new JTable(); 
     chTwoTable.setPreferredSize(d); 

     JTable listTable = new JTable(); 
     listTable.setPreferredSize(d); 

     listPanel.add(chOneTable); 
     listPanel.add(chTwoTable); 
     listPanel.add(listTable); 

     contentPane.add(listPanel); 

     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
+1

'frame.setVisible (true);'알고 계십니까, 이것은'pack()'다음에 와야합니다 :-) –

+0

그래도 시도해 봅니다 ... 나는 내 대답을 바꿀 것입니다. – alexvetter

+0

비록 OP가 질문에 주어진 것을 시도해도, 때때로 그것도 때때로 작동합니다 :-) –

2
  1. (즉 setVisible(true))

구성 요소의 이유 어느 것도 표시하지 않는 JFrame 인스턴스를 실현 JFrame 인스턴스에 구성 요소를 추가 JFrame 인스턴스를 구축합니다 JFrame 인스턴스는 실현 된 후에 구성 요소를 추가하기 때문에 나타납니다. 구성 요소를 표시하려면 위의 단계를 따르거나 buildGui 메서드 끝 부분에서 컨테이너를 다시 확인하거나 다시 채 웁니다.

관련 문제