Swing/_JDK6 の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/_JDK6 へ行く。
- Swing/_JDK6 の差分を削除
--- title: Java 6, 7 の Swing 新機能をテスト description: Java 6、7でSwingに新しく追加された機能を紹介した記事へのスクリーンショット付きリンク一覧 --- このページでは、`Java 6`, `7`で`Swing`に新しく追加された機能に関連する`Tips`を一覧にしています。 - [https://docs.oracle.com/javase/jp/8/docs/technotes/guides/swing/enhancements-6.html Java SE 6 での Swing の拡張機能] - [https://docs.oracle.com/javase/jp/8/docs/technotes/guides/swing/enhancements-7.html Java SE 7 での Swing の拡張機能] #contents * Java 6 [#Java6] ** TableRowSorterでJTableのソート [#TableRowSorter] #swingdescription(Swing/TableRowSorter,TableRowSorterでJTableのソート,JDK 6で導入された、TableRowSorterを利用して、JTableの行を降順、昇順にソートします。,https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTUnbg2jyI/AAAAAAAAAmU/-7yjlGSjBmo/s200/TableRowSorter.png) ** TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更 [#TriStateSorting] #swingdescription(Swing/TriStateSorting,TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更,JDK 6で導入されたTableRowSorterのソートを、TableSorter.javaのようにヘッダクリックで昇順、降順、初期状態に切り替わるように設定します。,https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTWVWrGvdI/AAAAAAAAApE/-DL1kAZzGsM/s200/TriStateSorting.png) ** RowFilterでJTableの行をフィルタリング [#RowFilter] #swingdescription(Swing/RowFilter,RowFilterでJTableの行をフィルタリング,JDK 6で導入されたTableRowSorterにRowFilterを設定して、行のフィルタリングを行います。,https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTST-FvjRI/AAAAAAAAAik/ZbU9nuVVCiI/s200/RowFilter.png) ** JTableのRowFilterを一旦解除してソート [#ResetRowFilter] #swingdescription(Swing/ResetRowFilter,JTableのRowFilterを一旦解除してソート,JTableのRowFilterを一旦解除してソートし、再びフィルタを設定することで表示される行を更新します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTRuQZLwOI/AAAAAAAAAho/ovjovr-5nuI/s200/ResetRowFilter.png) ** SwingWorkerを使った処理の中断と進捗状況表示 [#SwingWorker] #swingdescription(Swing/SwingWorker,SwingWorkerを使った処理の中断と進捗状況表示,JDK 6で新しくなったSwingWorkerを使って、処理の中断や進捗状況の表示更新などを行います。,https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTT8xXI-cI/AAAAAAAAAlQ/ueJc6P4EJVg/s200/SwingWorker.png) ** JTabbedPaneにタブを閉じるボタンを追加 [#TabWithCloseButton] #swingdescription(Swing/TabWithCloseButton,JTabbedPaneにタブを閉じるボタンを追加,JDK 6の新機能を使用し、JTabbedPaneのタブ内に自身を閉じるためのボタンを追加します。,https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTVCzHeo0I/AAAAAAAAAnA/hnMCEbHXnnw/s200/TabWithCloseButton.png) ** JTabbedPaneのタブにJTextFieldを配置してタイトルを編集 [#TabTitleEditor] #swingdescription(Swing/TabTitleEditor,JTabbedPaneのタブにJTextFieldを配置してタイトルを編集,JTabbedPaneのタブタイトルを直接編集します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTU43AZWdI/AAAAAAAAAmw/6klnGPa4D9o/s200/TabTitleEditor.png) ** JTabbedPaneのタイトルをクリップ [#ClippedTabLabel] #swingdescription(Swing/ClippedTabLabel,JTabbedPaneのタイトルをクリップ,JDK 6で導入されたタブにコンポーネントを追加する機能を使って、長いタイトルのタブは文字列をクリップして表示します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTJU-PNaRI/AAAAAAAAAUM/yAbkpSgRNVY/s200/ClippedTabLabel.png) ** JTable自体の高さを拡張 [#FillsViewportHeight] #swingdescription(Swing/FillsViewportHeight,JTable自体の高さを拡張,JDK 6で導入された機能を使用して、JViewportの高さまでJTableを拡張します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMkfiP8jI/AAAAAAAAAZY/qHWqJtrcUgQ/s200/FillsViewportHeight.png) ** ButtonGroup内のJRadioButtonなどの選択をクリア [#ClearGroupSelection] #swingdescription(Swing/ClearGroupSelection,ButtonGroup内のJRadioButtonなどの選択をクリア,JDK 6で追加された機能を使用して、ButtonGroup内の選択をクリアします。,https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTJDUnsHFI/AAAAAAAAATw/gkcmzcekHus/s200/ClearGroupSelection.png) * ↑10 ↓11 [#vd40ee92] #adsensebar ** SystemTrayにアイコンを表示 [#SystemTray] #swingdescription(Swing/SystemTray,SystemTrayにアイコンを表示,JDK 6で追加された機能を使って、SystemTrayにアイコンを表示します。,https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUJeisovI/AAAAAAAAAlk/zvAoP96Ntcs/s200/SystemTray.png) ** TrayIconのアニメーション [#AnimatedTrayIcon] #swingdescription(Swing/AnimatedTrayIcon,TrayIconのアニメーション,SystemTrayに追加したトレイアイコンをアニメーションさせます。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTHtWabBgI/AAAAAAAAARk/J0ExgthCnn4/s200/AnimatedTrayIcon.png) ** TrayIconのダブルクリック [#ClickTrayIcon] #swingdescription(Swing/ClickTrayIcon,TrayIconのダブルクリック,TrayIconをダブルクリックした場合フレームを表示、シングルクリックした場合はフレームを前面に表示します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTJK3dhHYI/AAAAAAAAAT8/1MUtk0Z-NQU/s200/ClickTrayIcon.png) ** Desktopでブラウザを起動 [#Desktop] #swingdescription(Swing/Desktop,Desktopでブラウザを起動,JDK 6で導入されたDesktopを使ってブラウザを起動します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTKu9HhvrI/AAAAAAAAAWc/iMheiQnF4hQ/s200/Desktop.png) ** GroupLayoutの使用 [#GroupLayout] #swingdescription(Swing/GroupLayout,GroupLayoutの使用,JDK 6で新しく導入されたGroupLayoutとGridBagLayoutを比較しています。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTNn9AdVUI/AAAAAAAAAbE/yOFdtRVr6P4/s200/GroupLayout.png) ** TableRowSorterのSortKeysをクリアする [#ClearSortingState] #swingdescription(Swing/ClearSortingState,TableRowSorterのSortKeysをクリアする,JDK 6で導入されたTableRowSorterでの行ソートを、テーブルヘッダの「Shift+クリック」でクリアします。,https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTJF8YbgvI/AAAAAAAAAT0/NDSO1fqmVNw/s200/ClearSortingState.png) ** JTabbedPaneのCloseButtonをフォーカスがある場合だけ表示 [#HoverCloseButton] #swingdescription(Swing/HoverCloseButton,JTabbedPaneのCloseButtonをフォーカスがある場合だけ表示,JTabbedPaneのタブを閉じるボタンを、タブにフォーカスがある場合だけ表示します。,https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTN-acwv2I/AAAAAAAAAbo/gFaIpQr1XGc/s200/HoverCloseButton.png) ** JTabbedPaneのタブにJProgressBarを表示 [#TabWithProgressBar] #swingdescription(Swing/TabWithProgressBar,JTabbedPaneのタブにJProgressBarを表示,JTabbedPaneのタブにJProgressBarを配置して、進捗を表示します。,https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTVHzMYZuI/AAAAAAAAAnI/7G4e4YZbiAQ/s200/TabWithProgressBar.png) ** JTableをソートした後の選択状態 [#UpdateSelectionOnSort] #swingdescription(Swing/UpdateSelectionOnSort,JTableをソートした後の選択状態,JDK 1.6で導入されたRowSorterを使って、JTableをソートした場合、直前の選択状態がどう変化するかテストします。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTWaXC_E3I/AAAAAAAAApM/H9h2pJw-VSQ/s200/UpdateSelectionOnSort.png) ** JTableのソートアイコンを変更 [#TableSortIcon] #swingdescription(Swing/TableSortIcon,JTableのソートアイコンを変更,JTableのソートアイコンを非表示にしたり、別の画像に変更します。,https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTUsaUYVkI/AAAAAAAAAmc/34Qz14LqOGc/s200/TableSortIcon.png) * ↑20 ↓21 [#adbbac3d] #adsensebar ** JTableのRowSorterをフィルタありソート不可にする [#FilterWithoutSorting] #swingdescription(Swing/FilterWithoutSorting,JTableのRowSorterをフィルタありソート不可にする,フィルタありでソート不可のTableRowSorterを作成します。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMr425A3I/AAAAAAAAAZk/ZFpsuUZWGcQ/s200/FilterWithoutSorting.png) ** TransferHandlerを使ったJListのドラッグ&ドロップによる並べ替え [#DnDReorderList] #swingdescription(Swing/DnDReorderList,TransferHandlerを使ったJListのドラッグ&ドロップによる並べ替え,JListのアイテムを複数選択し、ドラッグ&ドロップで並べ替えを可能にするTransferHandlerを作成します。,https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTLeSCyHuI/AAAAAAAAAXo/v2OLiSPdgEY/s200/DnDReorderList.png) ** JListのアイテムをラバーバンドで複数選択、ドラッグ&ドロップで並べ替え [#DragSelectDropReordering] #swingdescription(Swing/DragSelectDropReordering,JListのアイテムをラバーバンドで複数選択、ドラッグ&ドロップで並べ替え,JListのアイテムを、ラバーバンドで複数選択、ドラッグ&ドロップで並べ替え可能にします。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTL3XY_VqI/AAAAAAAAAYQ/RFVaD4w5C9w/s200/DragSelectDropReordering.png) ** JTableの列固定とソート [#FixedColumnTableSorting] #swingdescription(Swing/FixedColumnTableSorting,JTableの列固定とソート,列固定したJTableで、JDK 6で導入されたTableRowSorterを使った行ソートを行います。,https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTMzes1hqI/AAAAAAAAAZw/-m-PZSFzYAk/s200/FixedColumnTableSorting.png) ** JTabbedPane間でタブのドラッグ&ドロップ移動 [#DnDExportTabbedPane] #swingdescription(Swing/DnDExportTabbedPane,JTabbedPane間でタブのドラッグ&ドロップ移動,JTabbedPane間でタブのDrag&Dropによる移動を行います。,https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTLW06ZMXI/AAAAAAAAAXc/vzeXm4pwhVY/s200/DnDExportTabbedPane.png) ** ButtonGroup中にある選択状態のJToggleButtonをクリックして選択解除可能にする [#ToggleButtonGroup] #swingdescription(Swing/ToggleButtonGroup,ButtonGroup中にある選択状態のJToggleButtonをクリックして選択解除可能にする,ButtonGroup中にある選択状態のJToggleButtonをもう一度クリックすることで、その選択を解除できるように設定します。,https://lh3.googleusercontent.com/-xZ1YFhJedcg/V1Q_LKyzhzI/AAAAAAAAOao/S-uPsKtdlg8k1eWf2yCIGnh4Hw2r7bGNACCo/s200/ToggleButtonGroup.png) ** JTabbedPaneのタブにJCheckBoxを追加 [#TabWithCheckBox] #swingdescription(Swing/TabWithCheckBox,JTabbedPaneのタブにJCheckBoxを追加,JTabbedPaneのタブ内にクリック可能なJCheckBoxを追加します。,https://lh3.googleusercontent.com/-b5jcwNkPYZc/V12KPOBZsFI/AAAAAAAAObI/5fJ6EGqkXMg7fYFyLSDa_MwGJ3hXZGE-QCCo/s200/TabWithCheckBox.png) ** Fontにトラッキングを設定して文字列幅を詰めて描画する [#Tracking] #swingdescription(Swing/Tracking,Fontにトラッキングを設定して文字列幅を詰めて描画する,Fontに負のトラッキング値(字送り、文字間)を設定して文字列幅を縮小して描画します。,https://drive.google.com/thumbnail?id=1KrgIAqBBGNrvhJlqL9rWcKfeuNkTCktC) ** Iconを指定した数の四分円だけ回転して表示する [#QuadrantRotateIcon] #swingdescription(Swing/QuadrantRotateIcon,Iconを指定した数の四分円だけ回転して表示する,Iconを指定した数の四分円(90度)だけ回転してJLabelに配置します。,https://drive.google.com/thumbnail?id=1pAW3bfWkPq_I3DJciSJtYVB31En8TJH3) * Java 7 [#Java7] ** JLayerで指定したコンポーネントへの入力を禁止 [#DisableInputLayer] #swingdescription(Swing/DisableInputLayer,JLayerで指定したコンポーネントへの入力を禁止,JDK 7で導入された、JLayerを利用して、指定したコンポーネントへの入力を禁止します。,https://lh3.googleusercontent.com/-fJbneWE3WB4/TpLGoNbk1TI/AAAAAAAABDk/GJWfhRR4UB0/s200/DisableInputLayer.png) #swingdescription(Swing/DisableInputLayer,JLayerで指定したコンポーネントへの入力を禁止,JDK 7で導入されたJLayerを利用して指定したコンポーネントへの入力を禁止します。,https://lh3.googleusercontent.com/-fJbneWE3WB4/TpLGoNbk1TI/AAAAAAAABDk/GJWfhRR4UB0/s200/DisableInputLayer.png) ** JLayerで子コンポーネントへの入力を制限する [#PopupMenuBlockLayer] #swingdescription(Swing/PopupMenuBlockLayer,JLayerで子コンポーネントへの入力を制限する,JLayerを使って、子コンポーネントへのすべての入力を制限します。,https://lh5.googleusercontent.com/-Svne2X0djJ8/TtJGGlPU-OI/AAAAAAAABFM/xjZfqHHbkJ0/s200/PopupMenuBlockLayer.png) ** JLayerを使ってJTabbedPaneのタブの挿入位置を描画する [#DnDLayerTabbedPane] #swingdescription(Swing/DnDLayerTabbedPane,JLayerを使ってJTabbedPaneのタブの挿入位置を描画する,JLayerを使って、タブのドラッグ&ドロップでの移動先をJTabbedPane上に描画します。,https://lh3.googleusercontent.com/-xX0rzgauC5c/Txz4AxE_u2I/AAAAAAAABIM/jHQdxU1yP9g/s200/DnDLayerTabbedPane.png) ** JLayerを使用して無効時のコンポーネントの文字色を変更する [#JLayerDisabledText] #swingdescription(Swing/JLayerDisabledText,JLayerを使用して無効時のコンポーネントの文字色を変更する,JLayerを使用して、JButtonなどのコンポーネントを無効にしたときの文字色を変更します。,https://lh5.googleusercontent.com/-_2bogxiuOec/TzilFn0ms8I/AAAAAAAABJI/oMz_T6SqCwE/s200/JLayerDisabledText.png) ** StrokeBorderを使用する [#StrokeBorder] #swingdescription(Swing/StrokeBorder,StrokeBorderを使用する,Java 1.7.0で導入されたStrokeBorderをテストします。,https://lh3.googleusercontent.com/-MSfWQgMprsI/UAy_-BOqVII/AAAAAAAABPo/0uH5WtaajqY/s200/StrokeBorder.png) ** JProgressBarの文字列をJLayerを使って表示する [#ProgressStringLayer] #swingdescription(Swing/ProgressStringLayer,JProgressBarの文字列をJLayerを使って表示する,垂直JProgressBarの文字列をJLayerを使って横組で表示します。,https://lh4.googleusercontent.com/-ATDPf7XMEzg/UbTLqsulmsI/AAAAAAAABt0/_0ZOg11jmXk/s200/ProgressStringLayer.png) ** SecondaryLoopを使用してイベント・ディスパッチ・スレッド上で別途イベント・ループを実行する [#SecondaryLoop] #swingdescription(Swing/SecondaryLoop,SecondaryLoopを使用してイベント・ディスパッチ・スレッド上で別途イベント・ループを実行する,SecondaryLoopを使用して、イベント・ディスパッチ・スレッドをブロックせずに、別スレッドをイベント・ループを実行します。,https://lh3.googleusercontent.com/-eAqnf0aNSsQ/VhrDDmUQQeI/AAAAAAAAODs/fwDgjYwjTbk/s200-Ic42/SecondaryLoop.png) ** ComboBoxEditorにJLayerを設定し入力の妥当性を表示する [#ComboBoxEditorVerifier] #swingdescription(Swing/ComboBoxEditorVerifier,ComboBoxEditorにJLayerを設定し入力の妥当性を表示する,JComboBoxのComboBoxEditorにJLayerを設定し、その入力が妥当でない場合はアイコンを表示します。,https://lh3.googleusercontent.com/-4gsRLzrKTE0/VjYu_qwZ8pI/AAAAAAAAOFk/t0JvVmjMcjI/s200-Ic42/ComboBoxEditorVerifier.png)