2014-12-18 2 views
0

내가 간단한 텍스트 프로그램이 2 JPanel의 (몸과 바닥 글) 텍스트 몸에 영역과 바닥 글 lable와 JFrame에로드하고 일시 정지됩니다. 주문이 잘못되었거나 잊어 버렸는지 확실하지 않지만 프로그램을 시작할 때 지연이 발생하여 흰색으로 깜박입니다. 이것은 성가신 일이며 가능한 경우이 문제를 피하고 싶습니다. 이견있는 사람?시작 흰색 화면이


이것은 모양이 좋아 보이지만 처음에는 흰색으로 깜박이고 0.5 초 동안 손을 듭니다. 프레임 배경을 파란색으로 설정하려고 시도했지만 아무것도 변경되지 않았습니다.

hangs hereshould look like this...

JFrame frame = new JFrame("SIMPLE TEXT"); 
    JPanel panel = new JPanel(); 
    JTextArea textarea = new JTextArea(); 
    JPanel footer = new JPanel();  
    JLabel linecol = new JLabel("line: 0 col: 0"); 

    frame.setSize(640,480); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    frame.setResizable(false); 

    panel.setSize(frame.getBounds().width, frame.getBounds().height); 
    panel.setBackground(bgColor); 
    panel.setForeground(fgColor); 
    panel.setLayout(new BorderLayout()); 

    footer.setSize(640,20); 
    footer.setBackground(bgColor); 
    footer.setLayout(new BorderLayout()); 
    footer.setBorder(new EmptyBorder(0,0,0,10)); 

    textarea.setSize(400, 400); 
    textarea.setOpaque(false); 
    textarea.setForeground(fgColor); 
    textarea.setCaretColor(fgColor); 


    linecol.setForeground(fgColor); 


    frame.add(panel); 
    panel.add(footer, BorderLayout.PAGE_END); 
    panel.add(textarea); 
    footer.add(linecol, BorderLayout.LINE_END); 
+0

콜백 setvisible at –

답변

2

frame.setVisible(true);을 가지고 또한 setSize를 사용하여 시도하고 크기 것을 발견 할 것이다 화면이

JFrame frame = new JFrame("SIMPLE TEXT"); 
JPanel panel = new JPanel(); 
JTextArea textarea = new JTextArea(); 
JPanel footer = new JPanel();  
JLabel linecol = new JLabel("line: 0 col: 0"); 

//frame.setSize(640,480); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
//frame.setLocationRelativeTo(null); 
//frame.setVisible(true); 
//frame.setResizable(false); 

//... 

frame.add(panel); 
panel.add(footer, BorderLayout.PAGE_END); 
panel.add(textarea); 
footer.add(linecol, BorderLayout.LINE_END); 

frame.setResizable(false); 
frame.pack(); 
frame.setLocationRelativeTo(null); 
frame.setVisible(true); 

를 구축 한 후 사용자가 전화 목록 명령으로 이동하여 구성 요소는 프레임 및 패널이 레이아웃 관리자의 제어하에 있기 때문에 무의미합니다 (또한 매우 낙심됩니다).

또한 setResizable은 프레임의 테두리 크기를 변경할 수 있으므로이 크기 조절 및/또는 위치 지정을 시도하기 전에 호출해야합니다. 앤드류 톰슨에 의해 제안

업데이트, 당신은 레이아웃 매니저에 크기 힌트를 제공하기 위해 JTextArea(int, int)를 사용한다. 내에 넣으려면 JTextArea이 더 유용 할 수 있습니다. 자세한 내용은 How to Use Scroll Panes을 참조하십시오.

+2

* "컴포넌트를 시도하고 크기를 지정하기 위해'setSize'를 사용하는 것도 무의미합니다."* 그 생각을 계속하면,'JTextArea textManager = new JTextArea();'JTextArea textarea = new JTextArea (5,30);와 같은 것으로 레이아웃 관리자에게 크기를 제안 **합니다. –

+1

@AndrewThompson 좋은 제안! – MadProgrammer

관련 문제