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

[https://picasaweb.google.com/at.terai/JavaSwingTips02 &ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQslJy3MxYI/AAAAAAAAAts/xrxOCvbp-0A/s800/screenshots.png);]
&ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQslJy3MxYI/AAAAAAAAAts/xrxOCvbp-0A/s800/screenshots.png);

#contents

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

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

* 新着記事 [#whatsnew]
- 2016-06-27
#swingdescription(Swing/AnimatedTreeNode,JTreeのTreeNodeにAnimated GIFを表示する,JTreeのノードに設定したAnimated GIFのImageIconがアニメーションを行えるようにImageObserverを設定します。,https://lh3.googleusercontent.com/-U9WtOD4nOug/V3AE4msfadI/AAAAAAAAOcY/VDwIROM5Ju4gNFBm47FDBJTOtIazp7iyACCo/s144/AnimatedTreeNode.png)
- 2020-07-06
#swingdescription(Swing/CaretWidth,JTextComponentで使用されるCaretの幅を変更する,JTextFieldやJTextAreaなどのJTextComponentで使用されるCaretの幅を変更します。,https://drive.google.com/thumbnail?id=1yXj9mvzo3Ary_OohlWvmmV2DQXZiSG1O)

- 2016-06-20
#swingdescription(Swing/DisableColumnSelection,JTableの列を編集可、かつ選択不可に設定,JTableの指定した列を編集は可能、ただし選択することができなくなるように設定します。,https://lh3.googleusercontent.com/-goXZsRlvEdI/V2a1zMod1iI/AAAAAAAAOcA/ZX8_9YIkBwYS45vkDbZRBa6wf2PyjUS1QCCo/s144/DisableColumnSelection.png)
- 2020-06-29
#swingdescription(Swing/StatusBar,JFrameのリサイズが可能なサイズグリップ付きのステータスバーを作成する,JFrameの下部にマウスドラッグでリサイズが可能なサイズグリップ付きのステータスバーを配置します。,https://drive.google.com/thumbnail?id=1axOgWRI88iTM2MsOfCiFhDfcAMnMYCNf)

- 2016-06-13
#swingdescription(Swing/TabWithCheckBox,JTabbedPaneのタブにJCheckBoxを追加,JTabbedPaneのタブ内にクリック可能なJCheckBoxを追加します。,https://lh3.googleusercontent.com/-b5jcwNkPYZc/V12KPOBZsFI/AAAAAAAAObI/5fJ6EGqkXMg7fYFyLSDa_MwGJ3hXZGE-QCCo/s144/TabWithCheckBox.png)
- 2020-06-22
#swingdescription(Swing/UnicodeBlock,JTextArea内の文字の文字種を取得する,JTextArea内のCaret位置にある文字のUnicodeブロック(文字種)を取得してJTextFieldに表示します。,https://drive.google.com/thumbnail?id=1GOMN2Ar0unSeCHDsTEHGWIRcm0DgABQz)

- 2016-06-06
#swingdescription(Swing/ToggleButtonGroup,ButtonGroup中にある選択状態のJToggleButtonをクリックして選択解除可能にする,ButtonGroup中にある選択状態のJToggleButtonをもう一度クリックして選択を解除することができるように設定します。,https://lh3.googleusercontent.com/-xZ1YFhJedcg/V1Q_LKyzhzI/AAAAAAAAOao/S-uPsKtdlg8k1eWf2yCIGnh4Hw2r7bGNACCo/s144/ToggleButtonGroup.png)
- 2020-06-15
#swingdescription(Swing/MouseWheelTabCycling,JTabbedPaneのタブ選択をマウスホイールで変更する,JTabbedPaneのタブ選択をマウスホイールの上下回転で変更します。,https://drive.google.com/thumbnail?id=1o0WYONVZxnE60UMRtEN7JBE5NOsbpwTI)

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

* Tips一覧 [#listoftips]
#twocolumn
** `javax.swing.JComponent` [#jcomponent]
- [[JTable(41)>Swing/_JTable]]
-- [[CellEditor CellRenderer(39)>Swing/_CellEditor]]
-- [[JTableHeader TableColumn(29)>Swing/_JTableHeader]]
-- [[TableRowSorter RowFilter(21)>Swing/_TableRowSorter]]
- [[JTable(54)>Swing/_JTable]]
-- [[CellEditor CellRenderer(47)>Swing/_CellEditor]]
-- [[JTableHeader TableColumn(35)>Swing/_JTableHeader]]
-- [[TableRowSorter RowFilter(24)>Swing/_TableRowSorter]]
-- [[JDK1.5.0(6)>Swing/_JTable1.5.0]]
- [[JTextComponent(16)>Swing/_JTextComponent]]
-- [[JTextArea(21)>Swing/_JTextArea]]
-- [[JTextPane JEditorPane(24)>Swing/_JTextPane]]
- [[JButton JCheckBox JToggleButton JRadioButton(54)>Swing/_JButton]]
- [[JTree(49)>Swing/_JTree]]
- [[JComboBox(44)>Swing/_JComboBox]]
- [[JTabbedPane(39)>Swing/_JTabbedPane]]
- [[JFrame JDialog JWindow(34)>Swing/_JFrame]]
- [[JScrollPane JViewport JScrollBar(28)>Swing/_JScrollPane]]
- [[JTextField JPasswordField(26)>Swing/_JTextField]]
- [[JProgressBar ProgressMonitor(25)>Swing/_JProgressBar]]
- [[JMenuBar JToolBar JSeparator(24)>Swing/_JMenuBar]]
- [[JLabel(23)>Swing/_JLabel]]
- [[JPanel JSplitPane(23)>Swing/_JPanel]]
- [[JList(22)>Swing/_JList]]
- [[JPopupMenu(22)>Swing/_JPopupMenu]]
- [[JInternalFrame JLayeredPane JDesktopPane(20)>Swing/_JInternalFrame]]
- [[JSpinner(18)>Swing/_JSpinner]]
- [[JSlider(18)>Swing/_JSlider]]
- [[JToolTip(17)>Swing/_JToolTip]]
- [[JFileChooser JOptionPane(16)>Swing/_JFileChooser]]
- [[JLayer(16)>Swing/_JLayer]]
-- [[TreeCellEditor(10)>Swing/_TreeCellEditor]]
-- [[TreeCellRenderer(13)>Swing/_TreeCellRenderer]]
- [[JTextComponent(22)>Swing/_JTextComponent]]
-- [[JTextArea(26)>Swing/_JTextArea]]
-- [[JTextPane JEditorPane(35)>Swing/_JTextPane]]
- [[JButton AbstractButton(32)>Swing/_JButton]]
-- [[JCheckBox JCheckBoxMenuItem(23)>Swing/_JCheckBox]]
-- [[JRadioButton JToggleButton ButtonGroup(14)>Swing/_JRadioButton]]
- [[JComboBox(63)>Swing/_JComboBox]]
- [[JTabbedPane(54)>Swing/_JTabbedPane]]
- [[JScrollPane JViewport JScrollBar(50)>Swing/_JScrollPane]]
- [[JList(39)>Swing/_JList]]
- [[JMenuBar JToolBar JMenu JMenuItem JSeparator(38)>Swing/_JMenuBar]]
- [[JFrame JDialog JWindow(38)>Swing/_JFrame]]
- [[JFileChooser JOptionPane JColorChooser(37)>Swing/_JFileChooser]]
- [[JTextField JPasswordField JFormattedTextField(36)>Swing/_JTextField]]
- [[JPanel JSplitPane(33)>Swing/_JPanel]]
- [[JPopupMenu(32)>Swing/_JPopupMenu]]
- [[JLabel(31)>Swing/_JLabel]]
- [[JProgressBar ProgressMonitor(29)>Swing/_JProgressBar]]
- [[JToolTip(28)>Swing/_JToolTip]]
- [[JLayer(26)>Swing/_JLayer]]
- [[JInternalFrame JLayeredPane JDesktopPane(25)>Swing/_JInternalFrame]]
- [[JSpinner(25)>Swing/_JSpinner]]
- [[JSlider(21)>Swing/_JSlider]]

#twocolumn

** `Others` [#others]
- [[Graphics(36)>Swing/_Graphics]]
- [[Animation(32)>Swing/_Animation]]
- [[LayoutManager(30)>Swing/_Layout]]
- [[Drag&Drop(27)>Swing/_DnD]]
- [[Hyperlink Html(27)>Swing/_Hyperlink]]
- [[SwingWorker(21)>Swing/_SwingWorker]]
- [[Border(20)>Swing/_Border]]
- [[Focus(19)>Swing/_Focus]]
- [[Font(18)>Swing/_Font]]
- [[LookAndFeel(18)>Swing/_LookAndFeel]]
- [[File(10)>Swing/_File]]
- [[Graphics(44)>Swing/_Graphics]]
- [[LayoutManager(44)>Swing/_Layout]]
- [[Hyperlink Html(37)>Swing/_Hyperlink]]
- [[Animation(36)>Swing/_Animation]]
- [[Focus(35)>Swing/_Focus]]
- [[Drag & Drop(31)>Swing/_DnD]]
- [[Border(31)>Swing/_Border]]
- [[LookAndFeel(24)>Swing/_LookAndFeel]]
- [[SwingWorker(22)>Swing/_SwingWorker]]
- [[Font(19)>Swing/_Font]]
- [[File(14)>Swing/_File]]
- [[Cursor(8)>Swing/_Cursor]]
- [[TrayIcon(6)>Swing/_TrayIcon]]
- [[Sound(4)>Swing/_Sound]]
- [[Others(20)>Swing/_Others]]
- [[Others(23)>Swing/_Others]]

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

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

#twocolumn

* ライセンス [#licence]
このページ以下のすべてのソースコードは、[https://github.com/aterai/java-swing-tips GitHub]で、[https://github.com/aterai/java-swing-tips/blob/master/LICENSE.txt MITライセンス]のもと公開しています。
このページ以下のすべてのソースコードは[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ディレクトリを作成し、trunk/SurrogatePair以下のサンプルコードだけチェックアウト
 # 例えばSurrogatePair以下のサンプルコードのみ取得する
 svn co https://github.com/aterai/java-swing-tips/trunk/SurrogatePair

* 編集方針 [#policy]
- ''最も欲しいものはサンプルである'' ([http://steps.dodgson.org/bn/2007/07/06/ あるチュートリアルの思い出 - Backnumbers: Steps to Phantasien])
-- 各ページからダブルクリックなどで実行可能な`JAR`ファイルをダウンロードすることが可能
- ''最も欲しいものはサンプル'' ([http://steps.dodgson.org/bn/2007/07/06/ あるチュートリアルの思い出 - Backnumbers: Steps to Phantasien])
-- 各ページからダブルクリックなどで実行可能な`JAR`ファイルをダウンロードが可能
- ''SSCCE'' ([http://sscce.org/ Short, Self Contained, Correct Example])
- ''MCVE'' ([http://stackoverflow.com/help/mcve How to create a Minimal, Complete, and Verifiable example - Help Center - Stack Overflow])
- ''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`ファイルについて
-- [http://www.java.com/ja/download/faq/signed_code.xml ブラウザのJavaセキュリティ・メッセージの変更]
-- `7u51`から、署名が無い場合や、自己署名の場合は`JavaWebStart`で実行不可になったので、&ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TRD2KGq73BI/AAAAAAAAAwA/N8-6EXongNk/s800/webstart.png);ボタンをすべてのページから削除
--- `JavaWebStart`の記事も修正、または削除する予定

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

* 動作環境 [#environments]
このサイトにあるサンプルの、動作・テスト環境や、`JDK`のダウンロード、利用方法、質問、不具合報告についてお願いなどを記述しています。
このサイトにあるサンプルの動作・テスト環境や`JDK`のダウンロード・利用方法、質問・不具合報告についてのお願いなどを記述しています。

- [[動作環境、サンプルの実行方法などについて>Swing/_TestedEnvironments]]

このサイトのサンプルの不具合ではなく`Swing`自体の不具合のメモは以下にまとめています。

- [[Swing関係のバグについて>Swing/_Bug]]

* 参考リンク [#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