【发布时间】:2015-07-01 09:58:14
【问题描述】:
我有一个JTextArea,我希望用户输入一个人的地址。我知道用户输入的有效地址不会超过5 rows 和10 columns。所以我把它设置为JTextArea (5,10)。这样就可以正常工作了。
问题是当用户持续按enter 5 次以上时,文本区域将开始调整大小。我不想将文本区域放在 JScrollPane 中,因为用户输入的文本不适合滚动。
问题:当用户按下enter 时,我们如何禁止JTextArea 调整大小?
这是我的代码:
public class JTextAreaDemo {
private JFrame frame;
JTextAreaDemo(){
frame= new JFrame();
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new net.miginfocom.swing.MigLayout());
frame.setVisible(true);
frame.setLocationRelativeTo(null);
JLabel label=new JLabel("Address :");
JTextArea address= new JTextArea(5,20);
frame.add(label,"cell 0 0");
frame.add(address, "cell 1 0");
}
public static void main(String [] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
new JTextAreaDemo();
}});
}
}
【问题讨论】:
-
把它放在
JScrollPane,它正在调整大小,因为它的首选大小正在改变 -
你的意思是说当用户第5次按下回车键时,要么被空格替换,要么被忽略?
-
@MadProgrammer 好吧,这行得通。一件事,当用户按下回车键时,如何避免光标移动到第六行/行?
-
@Blip 是的,当用户第六次按下 Enter 时,它不应该做任何事情。它不应移动到第六行/行。
-
使用
DocumentFilter
标签: java swing layout-manager jtextarea miglayout