2013-10-15 52 views
0

我有一個Java應用程序連接到設備,並在JTextArea中顯示日誌。我希望JTextArea是可滾動的,我已經通過將它放入JScrollPane。包含JTextAreaJScrollPane位於BorderLayoutCENTER部分。我使用pack()來設置JFrame的大小,直到它被顯示。但是,這也存在一些問題:如何使JTextArea可滾動但仍然有高度設置?

  • 由於沒有高度的JTextArea顯得非常單薄設置,文本不能被看到很好(在第二張照片居然有文本):

    with no text & no height setwith some text & no height set

  • 對於JTextArea設置的首選尺寸,它似乎起初工作正常。但是,如果有更多文本滾動條不按預期方式顯示。無論JTextArea中的文字數量如何,JFrame都會調整大小。這也不會通過滾動顯示所有文字。

    with little text & preferred heightwith lots of text & preferred heightwith lots of text & preferred height & resized

  • 此外,設置最小高度不幫助;它會導致與第一種情況相同的結果。

我初始化幀碼:

JButton connectBtn, disconnectBtn; 
JTextArea logArea; 

public MyApplication() throws HeadlessException { 
    super(); 
    setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 
    addWindowListener(new MyWindowListener()); // Disconnect and exit on close 
    setLayout(new BorderLayout()); 
    connectBtn = new JButton("Connect"); 
    disconnectBtn = new JButton("Disconnect"); 
    disconnectBtn.setEnabled(false); 
    connectBtn.addActionListener(new ConnectListener()); // Connects to device 
    disconnectBtn.addActionListener(new DisconnectListener()); // Disconnects from device 
    logArea = new JTextArea(); 
    logArea.setEditable(false); 

    // Whatever fixes the problem goes here... e.g. 
    // logArea.setPreferredSize(new Dimension(100, 200)); 

    JPanel buttons = new JPanel(new BorderLayout()); 
    buttons.add(connectBtn, BorderLayout.LINE_START); 
    buttons.add(disconnectBtn, BorderLayout.LINE_END); 
    add(buttons, BorderLayout.PAGE_START); 
    add(new JScrollPane(logArea), BorderLayout.CENTER); 
    pack(); 
    setVisible(true); 
} 

回答

2

不要大小播放。

在文本區域中指定所需的行/列,文本區域將計算其自己的首選大小。

//logArea = new JTextArea(); 
logArea = new JTextArea(5, 20); 
+0

謝謝,它的工作原理! – Pietu1998

相關問題