各種 GUI 部品と利用例

GUI 部品の紹介

いろいろありますが、メジャーなものは Palette に出ているので、詳しい使い方は API document や市販テキストを探しましょう。

ここでは主な部品の紹介だけリストしておきます。

末端コンポーネント

他にも、javax.swing.JRadioButton, javax.swing.JToggleButton, javax.swing.JTextPane, javax.swing.JEditorPane など様々あります。

ダイアローグ機能用コンポーネント

コンテナ系

  • javax.swing.JFrame: タイトルバー付きのトップレベルウィンドウ。
    • 中身は、get/setContentPane()で設定されたコンテナに配置。
    • Menubar は、get/setJMenuBar() で設定されたjavax.swing.JMenuBarを利用
  • javax.swing.JPanel: 他の要素を含むための標準的なコンテナ。
  • javax.swing.JScrollPane: スクロールバー付きのコンテナ。
    • 例えば、JTextArea をこのなかに配置して使うと便利。

他にも javax.swing.JSplitPane, javax.swing.JTabbedPane などもあります。

つかってみる

いくつか便利そうな機能を使ってみました。

  • 画像アイコン付きのボタンを表示
  • アプリケーションメニューを利用
  • paintComponent() をつかって、Image を描画
  • paintComponent()BufferedImage をつかって描画内容をイメージファイルに保存
  • @swjava(javax.swing.JFileChooser) をつかって、ファイル選択

IJ画面1

プログラムはいつもの git repository にあります。

画像アイコン付きボタン

ボタンにアイコンを設定するのは簡単で、javax.swing.ImageIconを設定するだけです(こちら)。

Eclipse, InteliJ 両方とも、Designer 上でボタンのプロパティで icon 設定するだけです。

アプリケーションメニュー

こちらは、メニューの構造を作成しないといけないのですが、こんな感じで、 javax.swing.JMenuBarjavax.swing.JMenuを配置していきます。

Eclipse の Window Builder では、GUI 上で指定できました。

Image の描画

2ステップに分かれますが、それほど面倒ではありません。

描画内容のファイルへの保存

BufferedImage への書き込みも、Graphics2D を用いれば簡単です。 いつもの paintComponent(Graphics) を使えば描画可能です。

あとは、BufferedImage をファイルに書き込むだけ。

こんな感じ

JFileChooser

せっかくだから、ファイルにデータを保存したいですよね。

javax.swing.JFileChooser を使えば、普段 OS のファイルマネージャーをつかっている感じで、ファイル選択可能です。

拡張子指定したい場合は、それも可能です。

こちら の例は、こんな感じです。

  • メニューもしくはボタンで download 指定すると、saveImg() がイベントハンドラから呼ばれる。
  • JFileChooser が立ち上がって、ファイル選択
    • この例では、拡張子が “png” になるか、ユーザがファイル選択を止めるまでファイル選択が繰り返す
  • png ファイルが指定されたら、あとは、先ほど実装した「描画内容のファイルへの書き込み」を呼び出すだけ。

Read more