所以,我有一个JTextArea
.
我需要以防止用户输入超过 4 行文本的方式对其进行设置。我找到了一种计算行数的方法。但也必须考虑复制/粘贴。而且我没有使用等宽字体。
考虑到这一切,有没有办法做到这一点?
所以,我有一个JTextArea
.
我需要以防止用户输入超过 4 行文本的方式对其进行设置。我找到了一种计算行数的方法。但也必须考虑复制/粘贴。而且我没有使用等宽字体。
考虑到这一切,有没有办法做到这一点?
为什么不添加 aDocumentListener
并检查每次删除、插入或更改文本时的行数JTextArea
:
JTextArea.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
check();
}
public void removeUpdate(DocumentEvent e) {
check();
}
public void insertUpdate(DocumentEvent e) {
check();
}
public void check() {
if (JTextArea.getLineCount()>4){//make sure no more than 4 lines
JOptionPane.showMessageDialog(null, "Error: Cant have more than 4 lines", JOptionPane.ERROR_MESSAGE);
}
}
});
您需要定义一个关键侦听器,并且在其中肯定我们需要定义实现的方法,下一个代码是我的解决方案,希望对您有所帮助。
////
textfield.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(textfield.getLineCount() == maximum_number_of_your_default) {
c = ta.getCaret();
// c is an object of Caret class as : Caret c; initialization only.
a = c.getDot();
// a is an integer value initialized by zero as : int a = 0;
}
if(ta.getLineCount() > maximum_number_of_your_default){
c.moveDot(a);// To retrieve the caret to the last row.
}
// to show line segment on the output with each enter-press key :
if(e.getExtendedKeyCode() == KeyEvent.VK_ENTER)
System.out.println("!!!!!" + ta.getLineCount() + " "
+ ta.getText());
}
// default methods of KeyListener class
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});
////
这是我的想法,我希望它是正确的,祝你好运,一个世界,一个上帝,一个解决方案。