2014-06-07 3 views
0

사용자가 데이터를 입력하고 jtextarea가 결과와 함께 나타나는 데스크탑 창 프로그램이 있습니다. 그냥 텍스트 영역을 갖는 대신 스크롤 창에 추가하고 싶었습니다. 그래서 새로운 스크롤 창을 만들고 텍스트 영역을 추가했습니다. 이제, 데이터를 입력 할 때 페이지를 이동할 때까지 스크롤 창에 텍스트 영역이 나타나지 않습니다. 다시 말해서 모든 것이 작동하지만 결과와 스크롤 창을 화면에 표시하려면 페이지를 조금 움직여야합니다.화면을 이동해야 JTextArea가 표시됩니다.

왜 그런지에 대한 아이디어가 있습니까?

private JTextArea matchListResults = new JTextArea(); 
private JPanel matchPanelBase = new JPanel(new BorderLayout()); 
private JScrollPane mResults = new JScrollPane(); 

    private void matchResFrame(String[] matchResultArray) throws IOException,   SQLException { 

     Dimension size = new Dimension(); 
     size.setSize(400, 300); 
     matchListResults.setPreferredSize(size); 
     matchListResults.setFont(font); 

. . .

 mResults.getViewport().add(matchListResults); 
     matchListResults.setVisible(true); 
     matchPanelBase.add(mResults, BorderLayout.CENTER); 
    } 

답변

0

당신이 기본 코드는 눈에 보이는 GUI에 구성 요소를 추가 할 때 :

panel.add(...); 
panel.revalidate(); 
panel.repaint(); 

는 기본적으로 모든 구성 요소의 크기가 (0, 0) 그래서 페인트 아무것도 없다. revalidate()는 구성 요소의 크기와 위치를 결정하는 레이아웃 관리자를 호출합니다.

+0

나는 그것이 가능한 한 빨리 이것을 투표 할 것이다. 네 말이 맞아. 패널을 모두 설정 한 후에는 다시 확인한 다음 다시 칠해야했습니다. 재 페인트는 그 자체로는 작동하지 않습니다. 고마워요! – JustBlossom

0

새 구성 요소를 추가 한 후에는 패널에서 repaint()를 호출하십시오.

matchPanelBase.repaint(); 
관련 문제