2013-02-20 2 views
0

마우스 클릭없이 업데이트되지 : 구성 요소 돈을 제외하고,인 JPanel의 comonents 난 그냥이에 문제가 있었다

public Main(){ 
     super("HoboGames Pos System"); 
     setUndecorated(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
     GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this); 
     sale = new Sales(getSize()); 
     add(sale); 
    } 

모든 작품 : 판매는 단순한 JFrame의 추가됩니다

public class Sales extends JPanel{ 
    ArrayList<JPanel> panes; 
    ArrayList<String> tabs; 
    JTabbedPane tp; 
    public Sales(Dimension d){ 
     setSize(d); 
     setLayout(null); 
     tp = new JTabbedPane(); 
     Font f = new Font("Arial",Font.PLAIN,32); 
     tp.setFont(f); 
     for(Menu menu : FileManager.menus){ 
      JPanel tmp = new JPanel(); 
      /*int s = (int) Math.ceil(Math.sqrt(menu.products.size())); 
      tmp.setLayout(new GridLayout(s,s)); 
      System.out.println("size" + s); 
      for(Product p : menu.products){ 
       p.setFont(f); 
       tmp.add(p); 
      }*/ 
      tp.addTab(menu.name,null,tmp,"What is this?"); 
     } 
     tp.setBounds(0,0,getWidth(),getHeight()); 
     add(tp); 
    } 
} 

클릭이나 무언가로 인해 창이 업데이트 될 때까지 페인트 작업을하지 마십시오. 그래서 물건을 클릭하기 전까지는 빈 화면입니다. (죄송합니다. 전 화면으로 만드는 것과 같은 몇 가지 모서리를 자릅니다 ...)

+0

당신이 설명하는 문제를 보여주는 [sscce] (http://sscce.org/)를 포함하도록 질문을 편집하십시오. – trashgod

답변

2

완료되기 전에 창을 표시 했으므로 업데이트하지 않습니다. 구성 요소를 추가합니다.

시도 뭔가 같은 ...

GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this); 
sale = new Sales(getSize()); 
add(sale); 
setVisible(true); 

을 또는 당신이 당신의 구성 요소를 추가 완료 한 후, 당신은 프레임에 revalidaterepaint를 호출 할 수 있지만, 솔직히 말해서, 그것은 첫 번째 방법은 간단합니다. 구성 요소에 setSize를 사용

사이드 참고

강력히 구성 요소의 크기에 대한 결정을 내릴 BorderLayout처럼, 적절한 레이아웃 관리 의존해야 좋습니다.

+0

나는 그것을했고, 그것은 실제로 작동하지 않았다. 그러나 나는 그것을 다시 보이게 설정 한 후에 페인트를 칠했다. – csga5000

+0

@ csga5000 : 그러면 레이아웃을 사용하고'Window '를 묶는'pack()'을 써야합니다. – trashgod