2012年2月25日土曜日

JSpinnerの表示文字列を中央寄せに

JSpinnerといえば

どうも、プログラマのyu1rowです。
以前「JSpinnerのちょっと困った話」っていう小ネタのエントリを投稿しましたが、これが結構アクセス数多いんですね。
今回はその続きというか、派生の話題です。

要は「horizontalAlignment」が欲しいってだけ

JSpinnerにはhorizontalAlignmentがありませんでした。
でも欲しかったんで足しました。
今回はそれだけです。
需要、あるかなぁ?

JSpinnerにメソッドを付け足したクラスを作ります。
足された公開メソッドは以下の2つ。
  • void setHorizontalAlignment(int alignment)
  • int getHorizontalAlignment()
JSpinnerを継承したJAlignSpinnerクラスのコードを以下に示します。
package com.yu1row.blog;

import javax.swing.JFormattedTextField;
import javax.swing.JSpinner;

/**
 * Spinner implemented property horizontalAlignement.
 * @author yu1row
 */
public class JAlignSpinner extends JSpinner {

 private static final long serialVersionUID = 1L;

 private JFormattedTextField getTextField() {
  return (JFormattedTextField) getEditor().getComponents()[0];
 }

 public void setHorizontalAlignment(int alignment) {
  getTextField().setHorizontalAlignment(alignment);
 }

 public int getHorizontalAlignment() {
  return getTextField().getHorizontalAlignment();
 }
}


使い方

setHorizontalAlignmentの引数には以下を指定できます。
javax.swing.SwingConstants.LEFT左詰
javax.swing.SwingConstants.CENTER中央
javax.swing.SwingConstants.RIGHT右詰
javax.swing.SwingConstants.LEADING(日本語環境なら)左詰:デフォルト
javax.swing.SwingConstants.TRAILING(日本語環境なら)右詰

実際に使ってみたコード例を以下に示します。
import java.awt.Container;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.SwingConstants;

import com.yu1row.blog.JAlignSpinner;


public class ShowAlignSpinner {
 public static void main(String args[]) {
  JFrame frame = new JFrame();
  Container c = frame.getContentPane();

  c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
  JAlignSpinner spinner;

  // LEFT
  spinner = new JAlignSpinner();
  spinner.setHorizontalAlignment(SwingConstants.LEFT);
  c.add(spinner);
  // CENTER
  spinner = new JAlignSpinner();
  spinner.setHorizontalAlignment(SwingConstants.CENTER);
  c.add(spinner);
  // RIGHT
  spinner = new JAlignSpinner();
  spinner.setHorizontalAlignment(SwingConstants.RIGHT);
  c.add(spinner);
  // LEADING
  spinner = new JAlignSpinner();
  spinner.setHorizontalAlignment(SwingConstants.LEADING);
  c.add(spinner);
  // TRAILING
  spinner = new JAlignSpinner();
  spinner.setHorizontalAlignment(SwingConstants.TRAILING);
  c.add(spinner);

  frame.setSize(300, 200);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);  
 }
}

以上です!

0 件のコメント:

コメントを投稿