我在 Swing 中创建了一个用于编辑数据的对话框。它包含一个JTextArea
,两个JButton
实例(OK
& Cancel
)和一个JCheckBox
(Wrap Text
)。我想要做的是在用户单击复选框时包装文本区域中的文本。我最初使用setLineWrap(true)
.
我正在使用以下代码:
Runnable r1=new Runnable() {
@Override
public void run() {
System.out.println("True");
keyField.setLineWrap(true);
keyField.requestFocus();
}
};
Runnable r2=new Runnable() {
@Override
public void run() {
System.out.println("FALSE");
keyField.setLineWrap(false);
keyField.repaint();
keyField.requestFocus();
}
};
final Thread t1=new Thread(r1) ;
final Thread t2=new Thread(r2);
final JCheckBox chkSwing = new JCheckBox("Word Wrap",true);
chkSwing.addItemListener(
new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
//To change body of implemented methods use File | Settings | File Templates.
if (e.getStateChange() == ItemEvent.SELECTED) {
t1.start();
} else if (e.getStateChange() != ItemEvent.SELECTED){
t2.start();
}
}
});
panel.add(chkSwing);
问题
问题是,一旦我取消选中该复选框,文本就会被展开,但再次选中该复选框不会再次包裹文本。控制台显示正在调用线程。如何使复选框用于设置/取消设置文本区域的自动换行行为?