• 追加された行はこの色です。
  • 削除された行はこの色です。
---
title: Java Swing Tips
keywords: [Java, Swing, SSCCE, MCVE]
hreflang:
    href: https://java-swing-tips.blogspot.com/
    lang: en
description: ソースコード付きの小さな Java Swing アプリケーションを例にしてGUI プログラム作成のコツなどを解説
author: aterai
pubdate: 2003-09-25
---
このページ以下では、ソースコード付きの小さな`Java Swing`アプリケーションを例にして`GUI`プログラム作成のコツなどを解説しています。

&ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQslJy3MxYI/AAAAAAAAAts/xrxOCvbp-0A/s800/screenshots.png);

#contents

* Swingとは [#about]
`Swing`は、`GUI`(グラフィカル・ユーザ・インタフェース)を作成するための、`Java`標準のコンポーネントセット(ライブラリ、`UI`ツールキット)です。

RIGHT:[https://docs.oracle.com/javase/tutorial/uiswing/start/about.html About the JFC and Swing (The Java™ Tutorials)]

* 新着記事 [#whatsnew]
- 2023-08-21
#swingdescription(Swing/SaveRestoreRecentSwatch,JColorChooserのSwatchesタブに配置されたRecentカラーパレットを保存、復元する,JColorChooserのサンプル(Swatches)タブに配置されている最新(Recent)カラーパレットを保存、復元可能になるよう設定します。,https://drive.google.com/thumbnail?id=1TgGl797HaTynH4nyLDgHODJ8fj7HbJ4Y)
- 2024-03-18
#swingdescription(Swing/MenuAndToolBarSwitching,JToolBarとJMenuBarを切り替える,JToolBarに配置したハンバーガーメニュー風のJButtonをクリックしてこれをJMenuBarと切り替えます。,https://drive.google.com/thumbnail?id=1Qpanq4RDxRa_VHcMRdzG0OxBomIumTwl)

- 2023-08-14
#swingdescription(Swing/ProgressMonitorProgressText,ProgressMonitorを表示する進捗ダイアログのタイトルを変更する,ProgressMonitorを表示する進捗ダイアログのタイトル文字列をUIManagerを使用して変更します。,https://drive.google.com/thumbnail?id=16lSNILVyM6JQdkXhzj1drfgLXyS0DZPv)
- 2024-03-11
#swingdescription(Swing/VariableRoundedBorderOnComboBox,JComboBoxのBorderをドロップダウンリストの表示状態で切り替える,JComboBoxのBorderをドロップダウンリストの表示状態で切り替えて左右の辺が直線で描画されるよう設定します。,https://drive.google.com/thumbnail?id=1srDCMSHQw2olzIC8t0q1MQjJRHhVR4y_)

- 2023-08-07
#swingdescription(Swing/CheckBoxRolloverIcon,JCheckBoxのRolloverIconを変更する,JCheckBoxがマウスオーバー状態になったときに表示されるRolloverIconを変更します。,https://drive.google.com/thumbnail?id=1q_EVtkUi9y7ZaFQtmAwu4HJD4zy-qWlz)
- 2024-03-04
#swingdescription(Swing/RoundingSpecificCorners,Path2Dで指定した隅を丸めたランウド矩形図形を作成する,Path2Dを使用して指定した隅のみをベジェ曲線で丸めたランウド矩形図形を作成します。,https://drive.google.com/thumbnail?id=1F3aKQ3EgrQD9MXA8sJoeXRKXWj-gB6h2)

- 2023-07-31
#swingdescription(Swing/MenuDelayBeforePopedUp,JMenuからJPopupMenuが表示されるまでの遅延時間を設定する,JMenuがサブメニューの場合、JPopupMenuが表示されるまでの遅延時間を設定します。,https://drive.google.com/thumbnail?id=1M5LdPYH6ASqoI0ZrMN3X_RMQDKwy8_lB)
- 2024-02-26
#swingdescription(Swing/EditableTreePath,JTreeのTreeNodeが編集を開始可能かを調査する,JTreeのノードエディタが編集を開始できるかどうかをTreePathやMouseEventから状態を取得して判断します。,https://drive.google.com/thumbnail?id=1oHmohICOAH5TjHT3z4sAl7gJY0z9imbB)

- 2023-07-24
#swingdescription(Swing/FileChooserNewFolder,JFileChooserのテンプレート新規フォルダ名を変更する,JFileChooserで新規フォルダを作成するときに使用するテンプレートフォルダ名を変更します。,https://drive.google.com/thumbnail?id=1R2Ntdo5TiC-L9M31OVIzgq-U7J4nxixK)
- 2024-02-19
#swingdescription(Swing/RoundedCornerListCellRenderer,JComboBoxのドロップダウンリストでアイテム選択状態表示をラウンド矩形に変更する,JComboBoxで使用するドロップダウンリストのアイテム選択状態表示をラウンド矩形に変更するListCellRendererを作成します。,https://drive.google.com/thumbnail?id=1rMdApPD-7KgcOs2jLFTbRXqcI_SUe6IR)

** 更新履歴 [#changelog]
- [https://ateraimemo.com/archive Archive]
- [[以前の更新履歴>Swing/_ChangeLog]]

* Tips一覧 [#listoftips]
#twocolumn
** `javax.swing.JComponent` [#jcomponent]
- [[JTable(63)>Swing/_JTable]]
-- [[CellEditor CellRenderer(50)>Swing/_CellEditor]]
- [[JTable(67)>Swing/_JTable]]
-- [[CellEditor CellRenderer(52)>Swing/_CellEditor]]
-- [[JTableHeader TableColumn(42)>Swing/_JTableHeader]]
-- [[TableRowSorter RowFilter(27)>Swing/_TableRowSorter]]
-- [[TableRowSorter RowFilter(28)>Swing/_TableRowSorter]]
-- [[JDK1.5.0(6)>Swing/_JTable1.5.0]]
- [[JTree(53)>Swing/_JTree]]
-- [[TreeCellEditor(10)>Swing/_TreeCellEditor]]
- [[JTree(55)>Swing/_JTree]]
-- [[TreeCellEditor(11)>Swing/_TreeCellEditor]]
-- [[TreeCellRenderer(13)>Swing/_TreeCellRenderer]]
- [[JTextComponent(29)>Swing/_JTextComponent]]
-- [[JTextArea(29)>Swing/_JTextArea]]
-- [[JTextArea(30)>Swing/_JTextArea]]
-- [[JTextPane JEditorPane(39)>Swing/_JTextPane]]
- [[JButton AbstractButton(35)>Swing/_JButton]]
-- [[JCheckBox JCheckBoxMenuItem(26)>Swing/_JCheckBox]]
-- [[JRadioButton JToggleButton ButtonGroup(18)>Swing/_JRadioButton]]
- [[JComboBox(74)>Swing/_JComboBox]]
- [[JTabbedPane(72)>Swing/_JTabbedPane]]
- [[JScrollPane JViewport JScrollBar(64)>Swing/_JScrollPane]]
- [[JMenuBar JToolBar JMenu JMenuItem JSeparator(52)>Swing/_JMenuBar]]
- [[JList(50)>Swing/_JList]]
- [[JFileChooser JOptionPane JColorChooser(48)>Swing/_JFileChooser]]
-- [[JCheckBox JCheckBoxMenuItem(27)>Swing/_JCheckBox]]
-- [[JRadioButton JToggleButton ButtonGroup(19)>Swing/_JRadioButton]]
- [[JComboBox(78)>Swing/_JComboBox]]
- [[JTabbedPane(73)>Swing/_JTabbedPane]]
- [[JScrollPane JViewport JScrollBar(65)>Swing/_JScrollPane]]
- [[JMenuBar JToolBar JMenu JMenuItem JSeparator(57)>Swing/_JMenuBar]]
- [[JList(51)>Swing/_JList]]
- [[JFileChooser JOptionPane JColorChooser(51)>Swing/_JFileChooser]]
- [[JPopupMenu(48)>Swing/_JPopupMenu]]
- [[JFrame JDialog JWindow(46)>Swing/_JFrame]]
- [[JPopupMenu(45)>Swing/_JPopupMenu]]
- [[JLabel(44)>Swing/_JLabel]]
- [[JLayer(43)>Swing/_JLayer]]
- [[JTextField JPasswordField JFormattedTextField(42)>Swing/_JTextField]]
- [[JTextField JPasswordField JFormattedTextField(46)>Swing/_JTextField]]
- [[JLayer(45)>Swing/_JLayer]]
- [[JLabel(45)>Swing/_JLabel]]
- [[JPanel JSplitPane(40)>Swing/_JPanel]]
- [[JInternalFrame JLayeredPane JDesktopPane(35)>Swing/_JInternalFrame]]
- [[JToolTip(33)>Swing/_JToolTip]]
- [[JToolTip(34)>Swing/_JToolTip]]
- [[JSlider(32)>Swing/_JSlider]]
- [[JProgressBar ProgressMonitor(31)>Swing/_JProgressBar]]
- [[JProgressBar ProgressMonitor(32)>Swing/_JProgressBar]]
- [[JSpinner(28)>Swing/_JSpinner]]

#twocolumn

** `Others` [#others]
- [[Graphics(59)>Swing/_Graphics]]
- [[LayoutManager(50)>Swing/_Layout]]
- [[Focus(43)>Swing/_Focus]]
- [[Animation(42)>Swing/_Animation]]
- [[Border(40)>Swing/_Border]]
- [[Graphics(61)>Swing/_Graphics]]
- [[LayoutManager(52)>Swing/_Layout]]
- [[Focus(45)>Swing/_Focus]]
- [[Border(45)>Swing/_Border]]
- [[Animation(43)>Swing/_Animation]]
- [[Hyperlink Html(40)>Swing/_Hyperlink]]
- [[LookAndFeel(37)>Swing/_LookAndFeel]]
- [[Drag & Drop(33)>Swing/_DnD]]
- [[Font(25)>Swing/_Font]]
- [[LookAndFeel(39)>Swing/_LookAndFeel]]
- [[Drag & Drop(32)>Swing/_DnD]]
- [[Font(28)>Swing/_Font]]
- [[SwingWorker(22)>Swing/_SwingWorker]]
- [[File(14)>Swing/_File]]
- [[Calendar(13)>Swing/_Calendar]]
- [[Cursor(9)>Swing/_Cursor]]
- [[TrayIcon(7)>Swing/_TrayIcon]]
- [[Clock(6)>Swing/_Clock]]
- [[Sound(5)>Swing/_Sound]]
- [[Others(24)>Swing/_Others]]

** `JDK 6`, `JDK 7` [#jdk6jdk7]
- [[JDK 6, 7 での Swing 新機能(37)>Swing/_JDK6]]

** `Screenshot` [#screenshot]
- [https://drive.google.com/drive/folders/1ZiLGUiAv4olCMNUvlTWhkfrTCezfC6pa?usp=sharing スクリーンショット一覧(1042)]
- [https://drive.google.com/drive/folders/1ZiLGUiAv4olCMNUvlTWhkfrTCezfC6pa?usp=sharing スクリーンショット一覧(1072)]

#twocolumn

* ダウンロード [#download]
 git clone https://github.com/aterai/java-swing-tips.git

// - `Git`リポジトリを取得する場合:
//  git clone https://github.com/aterai/java-swing-tips.git
// - `Subversion`で特定のディレクトリ以下のみ取得する場合:
//  # 例えばSurrogatePair以下のサンプルコードのみ取得する
//  svn co https://github.com/aterai/java-swing-tips/trunk/SurrogatePair

* ライセンス [#licence]
このページ以下のすべてのソースコードは[https://github.com/aterai/java-swing-tips GitHub]で、[https://github.com/aterai/java-swing-tips/blob/master/LICENSE.txt MITライセンス]のもと公開しています。

- `Git`リポジトリを取得する場合:
 git clone https://github.com/aterai/java-swing-tips.git
- `Subversion`で特定のディレクトリ以下のみ取得する場合:
 # 例えばSurrogatePair以下のサンプルコードのみ取得する
 svn co https://github.com/aterai/java-swing-tips/trunk/SurrogatePair

* 編集方針 [#policy]
- ''最も欲しいものはサンプル'' ([https://bn.dodgson.org/bn/2007/07/06/ あるチュートリアルの思い出 - Backnumbers: Steps to Phantasien])
-- 各ページからダブルクリックなどで実行可能な`JAR`ファイルをダウンロードが可能
- ''SSCCE'' ([http://sscce.org/ Short, Self Contained, Correct Example])
- ''MCVE'' ([https://stackoverflow.com/help/mcve How to create a Minimal, Complete, and Verifiable example - Help Center - Stack Overflow])
- [https://ja.stackoverflow.com/help/minimal-reproducible-example 最小限の・自己完結した・確認可能なサンプルコードの書き方 - ヘルプ センター - スタック・オーバーフロー]
- すべての記事毎に、ソースコードや画像などのリソース、それらを[[Ant]]でコンパイル、実行するための`build.xml`をまとめた`zip`ファイルを添付
// - `JNLP`ファイルについて
// -- [https://www.java.com/ja/download/help/signed_code.html ブラウザのJavaセキュリティ・メッセージの変更]
// -- `7u51`から、署名が無い場合や、自己署名の場合は`JavaWebStart`で実行不可になったので、&ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TRD2KGq73BI/AAAAAAAAAwA/N8-6EXongNk/s800/webstart.png);ボタンをすべてのページから削除

* 動作環境 [#environments]
- [[動作環境、サンプルの実行方法などについて>Swing/_TestedEnvironments]]
-- このサイトにあるサンプルの動作・テスト環境や`JDK`のダウンロード・利用方法、質問・不具合報告についてのお願いなど
- [[Swing関係のバグについて>Swing/_Bug]]
-- このサイトのサンプルの不具合ではなく`Swing`自体の不具合についてのメモ

* 参考リンク [#reference]
- [[Java Swing 参考リンク>Swing/_Link]]
-- 参考にしたサイトなどの一覧

* コメント [#comment]
#comment
- [[SPAM対策で閉鎖する前のコメントのログ>Comments/Swing]]
- `forums.oracle.com`を、`community.oracle.com`に一括置換。 -- &user(aterai); &new{2014-11-25 (火) 17:57:58};
- `bugs.sun.com`を`bugs.java.com`に一括置換。 -- &user(aterai); &new{2014-11-30 (日) 17:57:58};
- `docs.oracle.com/javase/jp/8/api`を`docs.oracle.com/javase/jp/8/docs/api`に一括置換。 -- &user(aterai); &new{2015-03-09 (月) 17:57:58};
- 「`JTextArea`, `JTextPane`, `JEditorPane`」の一覧ページを、「`JTextArea`」と「`JTextPane`, `JEditorPane`」の二つに分離。 -- &user(aterai); &new{2016-04-07 (木) 17:57:58};

#comment