【Java】 カレンダーコンボボックス

  フリーソフトで実装



Microsoft ( VB.NET、IE ) や、Flex3 にはコントロールが存在するのですが、Java は
Swing 内に無いようなので、 FSCalenderCombo
をテストしてみました。

( というか、Google で「Swing カレンダー」でトップヒットします )








関連する記事
Eclipse Galileo 3.5(+VisualEditor)のインストール



※ 以下は、VB.NET と IE での カレンダーコンボボックスの実装 サンプルです








  Eclipse + Visual Editor で実装したソースコード



このページの TestFrame.java の実装手順
1) Java プロジェクトを作成( 実体の無い新規である事を確認して下さい )

2) JAR の参照設定で、「fscalendercombo.jar」 を参照

3) ビジュアルクラスを作成( JFrame、TestFrame.java、public static void main あり )

4) TestFrame.java をコピーペーストして作成
※ Visual Editor 内で直接貼り付けても良いのですが、パッケージなどの場合は一つ一つ作成するのは無理です。
※ その為、インポートできるようにしておきます

5) インポート
( 元のTestFrame.java のキャラクタセットを、プロパティで変更して一致させる : shift_jis => MS932 )

6) public class TestFrame extends JFrame {} の中身を全てコメントにしてコメントアウトする
( 「ソース」->「コメントの切り替え」 )

7) Visual Editor がソースより画面をリビルドして正しく表示されます


一般的な実装
jar を参照して、Bean の選択で VE で貼り付ける事ができます。
何故か命名された名前の先頭が小文字にならないんですけど・・・

※ ラベル用の説明テキストを別に用意したので、VE では変更できなくなっています( 表示はされます )
※ ラベルは、フォントと配置処理を追加しています
※ カレンダーコンボボックスは、初期値をセットしないと空になるのでセットしています( VE に反映されます )

※ ↓DB 書き込み用に編集して文字列を取得します

  
jTextField.setText(
		FSCalenderCombo.formatDate(
				FSCalenderCombo1.getDate(),"/"
		)
);
  

TestFrame.java
  
import javax.swing.SwingUtilities;
import javax.swing.SwingConstants;   // 定数用に追加
import java.util.Date;   // 当日日付取得用に追加
import javax.swing.JPanel;
import javax.swing.JFrame;
import jp.co.flatsoft.fscomponent.FSCalenderCombo;
import java.awt.Rectangle;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;

public class TestFrame extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private FSCalenderCombo FSCalenderCombo1 = null;
	private JTextField jTextField = null;
	private JButton jButton = null;
	private JLabel jLabel = null;
	private static String myLabel = "<HTML>" +
			"左右矢印で年・月・日を移動<br>" +
			"上下矢印で、値変更<br>" +
			"F4でカレンダーを開く<br>" +
			"再びF4でカレンダーを閉じる<br>" +
			"ESCでもカレンダーを閉じる<br>" +
			"<br>" +
			"カレンダー内で矢印で日付移動<br>" +
			"</HTML>";  //  @jve:decl-index=0:

	/**
	 * This method initializes FSCalenderCombo
	 *
	 *  @return jp.co.flatsoft.fscomponent.FSCalenderCombo
	 */
	private FSCalenderCombo getFSCalenderCombo() {
		if (FSCalenderCombo1 == null) {
			FSCalenderCombo1 = new FSCalenderCombo();
			FSCalenderCombo1.setBounds(new Rectangle(25, 27, 144, 28));
			FSCalenderCombo1.setDate(new Date());
		}
		return FSCalenderCombo1;
	}

	/**
	 * This method initializes jTextField
	 *
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(230, 78, 144, 25));
		}
		return jTextField;
	}

	/**
	 * This method initializes jButton
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(230, 27, 142, 26));
			jButton.setFont(new Font("MS Pゴシック", Font.BOLD, 12));
			jButton.setText("↓文字列に変換");
			jButton.addActionListener(new java.awt.event.ActionListener() {
			   public void actionPerformed(java.awt.event.ActionEvent e) {
			      jTextField.setText(
			         FSCalenderCombo.formatDate(
			            FSCalenderCombo1.getDate(),"/"
			         )
			      );
			      System.out.println(
			         FSCalenderCombo.formatDate(
			            FSCalenderCombo1.getDate(),"/"
			         )
			      );
			   }
			});
		}
		return jButton;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				TestFrame thisClass = new TestFrame();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public TestFrame() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 *
	 * @return void
	 */
	private void initialize() {
		this.setSize(432, 262);
		this.setContentPane(getJContentPane());
		this.setTitle("FSCalenderCombo のテスト"); // タイトル変更
	}

	/**
	 * This method initializes jContentPane
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(23, 75, 174, 129));
			jLabel.setFont(new Font("MS Pゴシック", 0, 12));
			jLabel.setText(myLabel);
			jLabel.setVerticalAlignment(SwingConstants.TOP);
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getFSCalenderCombo(), null);
			jContentPane.add(getJTextField(), null);
			jContentPane.add(getJButton(), null);
			jContentPane.add(jLabel, null);
		}
		return jContentPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
  




  JAR の参照設定

Java プロジェクトを作成する時は、ライブラリータブで「外部 JAR の追加」で jar を選択します
( 既存の場合は、「ビルドパス」->「ビルドパスの構成」 )








  Visual Editor への貼り付け

JPanel のレイアウトを null に変更して貼り付けます















  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ