我正在尝试在 JTextArea 中添加滚动条,但滚动条未显示在文本区域中..
这是我的代码,
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame("MySql Console");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
panel.setLayout(null);
JTextArea txtQuery = new JTextArea ();
txtQuery.setBounds(10, 10, 365, 45);
JScrollPane scroll = new JScrollPane (txtQuery,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//scroll.setPreferredSize(new Dimension(100, 50));
panel.add(scroll);
panel.add(txtQuery);
frame.setVisible(true);
}
}
尝试了互联网上的一些替代方案,但仍然不起作用。
最佳答案
panel.setLayout(null);
JTextArea txtQuery = new JTextArea ();
txtQuery.setBounds(10, 10, 365, 45);
JScrollPane scroll = new JScrollPane (txtQuery,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//scroll.setPreferredSize(new Dimension(100, 50));
panel.add(scroll);
panel.add(txtQuery);
不要使用空布局。布局管理器将确定组件的首选大小,然后滚动 Pane 可以确定何时需要滚动条。当您向文本区域添加文本时,滚动条将自动出现。
不要将文本区域添加到面板中。一个组件只能有一个父组件。您已经将文本区域添加到滚动 Pane 中。
通过指定文本区域的行/列为文本区域指定首选大小。
所以你修改后的代码应该是这样的:
//panel.setLayout(null);
JTextArea txtQuery = new JTextArea (5, 20);
//txtQuery.setBounds(10, 10, 365, 45);
JScrollPane scroll = new JScrollPane (txtQuery);
//scroll.setPreferredSize(new Dimension(100, 50));
panel.add(scroll);
//panel.add(txtQuery);
关于Java Swing JTextArea 滚动条未显示在内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36491640/