我试图使用jscrollpane在jtextfield中实现一个滚动条。
这就是我所拥有的:
import javax.swing.*;
import java.awt.*;
public class WordList extends JFrame {
public static void main(String[] args) {
WordList list = new WordList();
list.buildFrame();
}
public void buildFrame() {
JTextField wordField = new JTextField(20);
JScrollPane wordScroll = new JScrollPane(wordField);
wordScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
wordScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
wordScroll.setMaximumSize(wordScroll.getPreferredSize());
this.getContentPane().add(wordScroll);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
}
}
但是当我运行程序时,当文本的长度超过一定长度时,我看不到滚动条。。。
除非我这么做:
我改变了 JTextField wordField = new JTextField(20);
至 JTextField wordField = new JTextField("ABCDEFG");
当我这样做时,滚动条出现时,我键入了很多字符
我的代码怎么了?为什么即使字符数量超过一定数量,滚动条也不会出现?
1条答案
按热度按时间j8ag8udp1#
您的代码不起作用,因为整个内容窗格只是一个不支持自动换行的文本字段(这就是为什么jscrollpane不起作用,因为它需要对您的内容进行换行),并且文本总是溢出字段长度,而不调整其自身大小(不进行换行)。您应该使用jtextfield和jscrollbar以及y轴的boxlayout使内容垂直堆叠,或者使用jtextarea和jscrollpane代替。