Swingでデータを編集するためのダイアログボックスを作成しました。これには、、JTextArea
2つの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);
問題
問題は、チェックボックスの選択を解除するとテキストの折り返しが解除されますが、チェックボックスを再度オンにしてもテキストが折り返されないことです。コンソールは、スレッドが呼び出されていることを示しています。テキスト領域のワードラップ動作を設定/設定解除するためにチェックボックスを機能させるにはどうすればよいですか?