Swing/TabTitleEditor のバックアップ差分(No.3)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/TabTitleEditor へ行く。
- 1 (2008-09-08 (月) 14:02:08)
- 2 (2009-09-05 (土) 16:35:09)
- 3 (2010-08-10 (火) 16:50:47)
- 4 (2013-01-17 (木) 15:10:29)
- 5 (2013-07-26 (金) 01:06:53)
- 6 (2013-08-20 (火) 14:26:25)
- 7 (2014-11-28 (金) 16:27:12)
- 8 (2016-02-16 (火) 19:34:42)
- 9 (2017-07-06 (木) 13:59:18)
- 10 (2018-02-24 (土) 19:51:30)
- 11 (2018-07-06 (金) 16:34:05)
- 12 (2020-06-30 (火) 11:09:11)
- 13 (2021-12-03 (金) 06:52:51)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTabbedPaneのタブにJTextFieldを配置してタイトルを編集
#navi(../)
RIGHT:Posted by [[terai]] at 2008-09-08
*JTabbedPaneのタブにJTextFieldを配置してタイトルを編集 [#d882fb01]
JTabbedPaneで選択されたタブにJTextFieldを配置し、そのタイトルを編集します。
-&jnlp;
-&jar;
-&zip;
#screenshot
**サンプルコード [#h79b831e]
#code{{
private int editing_idx = -1;
private int len = -1;
private Dimension dim;
private void startEditing() {
//System.out.println("start");
editing_idx = tabbedPane.getSelectedIndex();
tabbedPane.setTabComponentAt(editing_idx, editor);
editor.setVisible(true);
editor.setText(tabbedPane.getTitleAt(editing_idx));
editor.selectAll();
editor.requestFocusInWindow();
len = editor.getText().length();
dim = editor.getPreferredSize();
editor.setMinimumSize(dim);
}
private void cancelEditing() {
//System.out.println("cancel");
if(editing_idx>=0) {
tabbedPane.setTabComponentAt(editing_idx, null);
editor.setVisible(false);
editing_idx = -1;
len = -1;
editor.setPreferredSize(null);
}
}
private void renameTabTitle() {
//System.out.println("rename");
String title = editor.getText().trim();
if(editing_idx>=0 && !title.isEmpty()) {
tabbedPane.setTitleAt(editing_idx, title);
}
cancelEditing();
}
}}
**解説 [#zc941476]
JTabbedPaneのタブタイトルを直接編集します。
JDK 6 で導入された、JTabbedPane#setTabComponentAt メソッドを使用してタブにJTextFieldを追加しています。
操作方法などは、以下のように、GlassPaneを使用している[[JTabbedPaneのタブタイトルを変更>Swing/EditTabTitle]]と同じですが、こちらは文字が入力されるたびに(JTabbedPane#revalidate しているので)タブの幅が広がります。
-操作方法
--マウスでタブをダブルクリック、またはタブを選択してリターンキーで編集開始
--編集中に入力欄以外をクリック、またはリターンキーでタイトル文字列が確定
--編集中タブキーを押しても無視
--Escで編集をキャンセル
--0文字で確定した場合も、キャンセル扱い
**参考リンク [#a112019d]
-[[JTabbedPaneのタブタイトルを変更>Swing/EditTabTitle]]
--こちらは、JDK 6 以前でも動作するように、GlassPaneにJTextFieldを配置してタブタイトルの編集を行っています。
**コメント [#y13cc0d8]
#comment