JTextAreaにフォーカスが当たったときその高さを自動拡張する
Total: 4548, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JTextAreaにフォーカスが当たったときその高さを自動拡張、外れたときに縮小します。
Screenshot

Advertisement
Source Code Examples
textArea.addFocusListener(new FocusAdapter() {
@Override public void focusLost(FocusEvent e) {
String text = textArea.getText();
label.setText(text.isEmpty() ? " " : text);
cardLayout.show(cp, "TextField");
}
});
label.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
cardLayout.show(cp, "TextArea");
textArea.requestFocusInWindow();
}
});
View in GitHub: Java, KotlinDescription
- 上:
JTextArea+FocusListenerJTextAreaにフォーカスが当たったときJTextArea#setRows(...)で行数を拡張、フォーカスが外れたときに一行に縮小- 複数行分の文字列が入力されている状態で一行に縮小した場合、
JScrollPaneのスクロールボタンが表示される
- 下:
JLabel+JTextArea+CardLayout+FocusListener- フォーカス可能に設定した
JLabelにJTextFieldの文字色、背景色などを設定し、フォーカス状態が変更されたときCardLayoutでこれをJTextAreaと切り替えることで拡張・縮小を実行 - 複数行分の文字列が入力されている状態で一行に縮小した場合、
JLabelのデフォルトの切り詰めで末尾が...に置換表示される JLabelのテキストを無しにすると高さが0になってしまうので空白文字を追加することで回避
- フォーカス可能に設定した