2014-10-20 1 views
1

텍스트 파일에서 긴 인용문을 읽으므로 모든 레이블이 설정되지만 단추에는 JLabel이 표시되지 않습니다. 시스템 인쇄를 표시 할 수는 있지만 레이블이 나오지 않아 버튼이 잘된 것처럼 보입니다. 견적은 마틴 루터 킹의 연설의 크리스 터커의 버전의 "HTML 형식의 텍스트 문서 매우 구체적으로Java Swing을 사용하여 리더를 활성화하는 버튼에 필요한 라벨이 표시되지 않습니까?

다음

내가 지금까지 시도했습니다 내용은 다음과 같습니다.

package MenuBoxes; 

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

public class quoteReader extends JFrame{ 
    private JFrame frame; 
public quoteReader(){ 
    initUI(); 
} 
public final void initUI(){ { 
    String listArray[] = null; 
    JButton click = new JButton("click me"); 
    click.setLocation(120,30); 
    click.setSize(100,100); 
    JPanel panel = new JPanel(); 
    panel.setLayout(null); 
    panel.add(click); 
    add(panel); 
    setTitle("Quote Reader"); 
    setSize(500,400); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
click.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     // TODO Auto-generated method stub 
     //nameLabel = name.getText(); 
     //use .= for comparing strings 
     String[] listArray = new String [2]; 
     try{ 
      BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Chrt\\workspace\\Finals\\Quotes.txt")); 
      int index = 0; 
      String line = ""; 
      while((line = br.readLine()) != null) { 
       listArray[index] = line; 
       index++; 
       JLabel read = new JLabel(line); 
       System.out.println(line); 
       read.setLocation(120,90); 
       read.setSize(300,200); 
       read.setFont(new Font("Calibri",Font.BOLD,13)); 
       panel.add(read); 
       add(panel); 
       setVisible(true); 
      } 
      br.close(); 
      } catch (IOException ioe){ 
       System.out.println("Cannot read"); 
       System.exit(0); 
      } 
      } 
    } 
); 

}}} 
+1

'JLabels'대신 [JEditorPane] (http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html)을 사용하는 것이 좋지 않을까요? 게다가, Swing은 [Layout Manager] (http)와 함께 사용되도록 설계되었으므로'setBounds (...)','setLocation (...)'과 같은 메소드를'setXxxSize (...) : //docs.oracle.com/javase/tutorial/uiswing/layout/index.html) 및 고정 된 구성 요소 크기/위치가 아닙니다. – dic19

답변

0

당신은 텍스트를 추가 한 후 다시 칠 필요 라벨에. 또한

this.repaint(); 

, 코드에 따라, 당신은 당신이 JLabel의 텍스트를 추가 한 후 때까지 JFrame의의 visoble을하지 않습니다. 당신이

setVisible(true); 
01을 추가해야합니다 initUI() 메소드에 대한

+0

효과적인 답변! 감사합니다. – chrt

+0

문제 없습니다. 당신은 이미 그 길의 99 %였습니다. – barna10