本文介紹了如何使JTextArea可滾動,但仍然設置了高度?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個連接到設備的Java應用程序,并在JTextArea
中顯示日志。我希望JTextArea
是可滾動的,這是我通過將其放入JScrollPane
中實現的。包含JTextArea
的JScrollPane
位于BorderLayout
的CENTER
部分。我使用pack()
在JFrame
顯示之前設置它的大小。但是,這有一些問題:
JTextArea
沒有設置高度,很薄,文字看不清(第二張圖片里其實是文字):
使用為JTextArea
設置的首選大小,它一開始似乎工作得很好。但當文本較多時,滾動條不會按預期顯示。它們在縮小JFrame
大小時出現,而不考慮JTextArea
中的文本量。這也不會通過滾動顯示所有文本。
另外,設置最小高度也無濟于事;它會導致與第一種情況相同的結果。
我初始化框架的代碼:
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);
}
推薦答案
不要玩弄尺寸。
指定文本區域中所需的行/列,文本區域將計算其自己的首選大小。
//logArea = new JTextArea();
logArea = new JTextArea(5, 20);
這篇關于如何使JTextArea可滾動,但仍然設置了高度?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,