• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:Java Swing Tips
#keywords(Java Swing)
#description(Java Swing での GUI プログラム作成のコツなどを、「小さなサンプル(ソースコード付き)」を使って紹介しています。)
---
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`プログラム作成のコツなどを解説しています。

RIGHT:Posted by &author(aterai); at &time(2003-09-25);
* Java Swingのサンプル [#a9e9d42a]
&ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQslJy3MxYI/AAAAAAAAAts/xrxOCvbp-0A/s800/screenshots.png);

#contents(big)
#contents

* 概要 [#qb9561c8]
- このページ以下では、`Java Swing`での`GUI`プログラム作成のコツなどを、「小さなサンプル(ソースコード付き)」を使って紹介しています。
-- `Swing`どころか`JFC`にも無関係な`Tips`も混在していますが、細かいことはあまり気にしない方向で…。

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

- 上の画像をクリックすると`Picasa`の画像一覧に移動します。以前の[[スクリーンショット一覧>Swing/_ScreenShots]]は、スライドショーに変更しました。

** Swingとは [#p0b76fde]
* 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)]

* Tips一覧 [#e739db5d]
* 新着記事 [#whatsnew]
- 2019011-11
#swingdescription(Swing/FocusDashedRectGap,JButtonなどの点線によるフォーカス描画の内余白を変更する,WindowsLookAndFeelなどを適用したJButtonで描画される点線によるフォーカス矩形の内余白を変更します。,https://drive.google.com/uc?id=1l5MNuTp7CTOcdF6t6zeqccxU2fJtnU6V)

#twocolumn
- 2019-11-04
#swingdescription(Swing/CarouselCardLayout,CardLayoutの前後のカードを左右に表示する,CardLayoutを設定したContainerからカレントカードの前後に存在するカードを取得し、半透明でカレントカードの左右に表示します。,https://drive.google.com/uc?id=1P9cXLzg4aUWv4LS9XptuChDgsprRayp5)

- `javax.swing.JComponent`
-- [[JTable(36)>Swing/_JTable]]
--- [[CellEditor CellRenderer(33)>Swing/_CellEditor]]
--- [[JTableHeader TableColumn(22)>Swing/_JTableHeader]]
--- [[TableRowSorter RowFilter(18)>Swing/_TableRowSorter]]
--- [[JDK1.5.0(6)>Swing/_JTable1.5.0]]
-- [[JTextPane JEditorPane JTextArea(47)>Swing/_JTextPane]]
-- [[JButton JCheckBox JToggleButton JRadioButton(45)>Swing/_JButton]]
-- [[JTree(41)>Swing/_JTree]]
-- [[JComboBox(37)>Swing/_JComboBox]]
-- [[JTabbedPane(33)>Swing/_JTabbedPane]]
-- [[JFrame JDialog JWindow(32)>Swing/_JFrame]]
-- [[JScrollPane JViewport JScrollBar(26)>Swing/_JScrollPane]]
-- [[JTextField JPasswordField(25)>Swing/_JTextField]]
-- [[JProgressBar ProgressMonitor(24)>Swing/_JProgressBar]]
-- [[JMenuBar JToolBar JSeparator(22)>Swing/_JMenuBar]]
-- [[JPopupMenu(20)>Swing/_JPopupMenu]]
-- [[JLabel(20)>Swing/_JLabel]]
-- [[JList(19)>Swing/_JList]]
-- [[JSpinner(17)>Swing/_JSpinner]]
-- [[JPanel JSplitPane(16)>Swing/_JPanel]]
-- [[JToolTip(16)>Swing/_JToolTip]]
-- [[JInternalFrame JLayeredPane JDesktopPane(15)>Swing/_JInternalFrame]]
-- [[JLayer(13)>Swing/_JLayer]]
-- [[JFileChooser(12)>Swing/_JFileChooser]]
-- [[JSlider(12)>Swing/_JSlider]]
- 2019-10-28
#swingdescription(Swing/ScrollToReference,JEditorPane内のリンク参照位置までスクロールする,JEditorPaneのHTMLDocument内に配置されたリンクのアンカータグが表示される位置までスクロールします。,https://drive.google.com/uc?id=1dnBj5zunBtGVHQ4iD2Kgwqe6IbWCjYSV)

#twocolumn
- 2019-10-21
#swingdescription(Swing/DropFileOnFileChooser,JFileChooserにTransferHandlerを設定してFileをドロップ可能にする,JFileChooserにTransferHandlerを設定してFileやDirectoryをドロップ可能にします。,https://drive.google.com/uc?id=1NA-vGQgCHGvMjG9nrxYwpTVuYCIgeFFZ)

- `Others`
-- [[Graphics(34)>Swing/_Graphics]]
-- [[Animation(30)>Swing/_Animation]]
-- [[Layout(23)>Swing/_Layout]]
-- [[Drag&Drop(21)>Swing/_DnD]]
-- [[SwingWorker(21)>Swing/_SwingWorker]]
-- [[Hyperlink Html(21)>Swing/_Hyperlink]]
-- [[Font(16)>Swing/_Font]]
-- [[Focus(16)>Swing/_Focus]]
-- [[LookAndFeel(16)>Swing/_LookAndFeel]]
-- [[Border(15)>Swing/_Border]]
-- [[File(9)>Swing/_File]]
-- [[Cursor(7)>Swing/_Cursor]]
-- [[TrayIcon(5)>Swing/_TrayIcon]]
-- [[Sound(4)>Swing/_Sound]]
-- [[Others(20)>Swing/_Others]]
** 更新履歴 [#changelog]
- [https://ateraimemo.com/archive.html Archive]
- [[以前の更新履歴>Swing/_ChangeLog]]

- `JDK 6`, `JDK 7`
-- [[JDK 6, 7 での Swing 新機能(31)>Swing/_JDK6]]

- `Screen shots`
-- [[スクリーンショット一覧(552)>Swing/_ScreenShots]]

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

* 編集方針 [#ja35f484]
- ''最も欲しいものはサンプルである'' ([http://dodgson.org/omo/t/?date=20070706#p02 steps to phantasien t(2007-07-06)]から引用)
-- 各ページからダブルクリックなどで実行可能な`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])
-- すべての記事にソースコードや画像などのリソース、これらを[[Ant]]で簡単にコンパイル、実行するための`build.xml`をまとめた`zip`ファイルを添付しています。
-- または、[[Subversion]]のリポジトリから、以下のようにしてまとめて取得することができます。
 svn checkout http://java-swing-tips.googlecode.com/svn/trunk/ java-swing-tips-read-only

- `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]]の記事も修正、または削除する予定

RIGHT:[http://d.hatena.ne.jp/aterai/20071016/1192516545 (Java Swing 引用メモ) Swingのサンプルに関するメモ]

* 更新履歴 [#v6d4524e]

#twocolumn

- 2014-09-01
-- [[JTableのHTML形式コピーをカスタマイズする>Swing/HtmlTableTransferHandler]]を追加
** `Others` [#others]
- [[Graphics(44)>Swing/_Graphics]]
- [[LayoutManager(44)>Swing/_Layout]]
- [[Animation(36)>Swing/_Animation]]
- [[Hyperlink Html(36)>Swing/_Hyperlink]]
- [[Focus(33)>Swing/_Focus]]
- [[Drag & Drop(31)>Swing/_DnD]]
- [[Border(30)>Swing/_Border]]
- [[LookAndFeel(23)>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(23)>Swing/_Others]]

- 2014-08-25
-- [[JProgressBarの進捗状況と進捗文字列色を変更する>Swing/ProgressBarSelectionColor]]を追加
** `JDK 6`, `JDK 7` [#jdk6jdk7]
- [[JDK 6, 7 での Swing 新機能(35)>Swing/_JDK6]]

- 2014-08-18
-- [[MouseWheelEventを親のJScrollPaneに転送する>Swing/WheelOverNestedScrollPane]]を追加
** `Screenshot` [#screenshot]
- [https://drive.google.com/drive/folders/1ZiLGUiAv4olCMNUvlTWhkfrTCezfC6pa?usp=sharing スクリーンショット一覧(813)]

- 2014-08-11
-- [[TableCellRendererに複数行のHtmlテキストを表示する場合に行揃えを設定する>Swing/HtmlCellVerticalAlignment]]を追加

#twocolumn

- [[以前の更新履歴>Swing/_ChangeLog]]
- バグや誤字の修正などは随時おこなっていますが、簡単なものについては追記にせず上書きしています。すべての履歴が必要な場合は、以下を参照してください。
--- ソースは、リポジトリ(`svn repository`)から履歴を参照可能
--- 各ページの解説などは、上部メニューから`diff`(変更された箇所をみる)、`backup`(更新履歴を参照する)が利用可能
* ライセンス [#licence]
このページ以下のすべてのソースコードは、[https://github.com/aterai/java-swing-tips GitHub]で、[https://github.com/aterai/java-swing-tips/blob/master/LICENSE.txt MITライセンス]のもと公開しています。

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

#twocolumn
* 編集方針 [#policy]
- ''最も欲しいものはサンプル'' ([http://steps.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`ファイルについて
-- [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`の記事も修正、または削除する予定

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

- [[動作環境、サンプルの実行方法などについて>Swing/_TestedEnvironments]]
- `Windows 10`の高解像度環境で`Swing`アプリのスケールがおかしくなる場合の対処方法
-- [https://superuser.com/questions/988379/how-do-i-run-java-apps-upscaled-on-a-high-dpi-display windows 10 - How do I run Java apps upscaled on a high-DPI display? - Super User]

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

* 参考リンク [#v0bd3645]
- [[Swing関係のバグについて>Swing/_Bug]]

* 参考リンク [#reference]
参考にしたサイトなどのリンクをまとめています。

- [[Java Swing 参考リンク>Swing/_Link]]

以前このページの下にあった`Java Swing Hacks`本のレビュー?は、すべて[http://d.hatena.ne.jp/aterai/20060502 てんぷらメモ@はてな]に移動しました。
- [http://d.hatena.ne.jp/aterai/searchdiary?word=%2a%5bSwing%20Hacks%5d 記事一覧]、[http://d.hatena.ne.jp/aterai/archive?word=%2a%5bSwing%20Hacks%5d タイトル一覧]
* コメント [#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};

#twocolumn
#comment

* コメント [#w04556af]
Swing関係のコメントや、ネタのリクエストなどがあれば書き込んでみてください。
#pcomment