Checklistツールを作ってみよう2

 

壮大なる構想を立てて、膨大な人と時間をかけたとしても未完成のソフト
(あるいは、ちゃんと動かないソフト)は何の役にも立ちません。

毎度、管理人イガジーです。

ですから、まずは重要な部分がちゃんと動くモノを目指しましょう。
という訳で、チェックリストツールですが、中心的部分は
JCheckBox というクラスを使えば割とお手軽にできあがります。
クリックすれば、チェックマークに[レ]が入り、もう1度クリックすれば
元に戻ります。
プログラムで必要なのは、そのJCheckBox に文字列を設定し、
縦に並べること(だけ)なのです。

という訳で、プログラム例としては、次のような感じでどうでしょうか。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JChecklists0 {
	String []lst={
		"はぶらし",
		"タオル",
		"ビニール袋",
		"着替え",
		"めがね",
		"手帳・ペン",
		"財布",
		"ノートパソコン",
		"ACアダプタ",
		"携帯充電器",
		"文庫本",
	};
	int items=lst.length;
	JFrame f0;
	JPanel p0;
	JCheckBox []cb =new JCheckBox[items];

	Color c0=new Color(255,255,230);

	JChecklists0() {
		f0=new JFrame("JCheck");
		f0.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent ev) {
				System.exit(0);
			}
		});
		p0=new JPanel(new GridLayout((items>6)?items:6,1,0,1));
		for (int i=0;i<items;++i) {
			cb[i]=new JCheckBox(lst[i]);
			cb[i].setBackground(c0);
			p0.add(cb[i]);
		}
		f0.add(p0,BorderLayout.CENTER);
		f0.setSize(180,260);
		f0.setVisible(true);
	}
	public static void main(String[] args) {
		new JChecklists0();
	}
}

まずは、こうした形ででも、「動く」ことが肝要です。
データの保存機能が無くても、パソコンを起動して、電源を切るまでの
「やることリスト」であれば、これで充分でしょう。
毎日の自己暗示にも効果的(かもしれません ^^; )
項目の編集(増減)は、ソースを直接いじればいい。

項目が増えた時の、スクロールについては JScrollPane を
使ったこの記事を参考にして追加してみてください。

項目をクリックしてチェックを入れた時に、色を変えたいと思ったら

class MyJCheckBox extends JCheckBox implements ItemListener {
	private static final long serialVersionUID = 1L;

	MyJCheckBox(String lbl) {
		super(lbl);
		this.addItemListener(this);
	}
	
	void setColor(){
		if (isSelected()) setBackground(c1);
		else  setBackground(c0);
	}
	@Override
	public void itemStateChanged(ItemEvent arg0) {
		setColor();
	}
} // class MyJCheckBox

という感じでJCheckBoxをextends して、
ItemListener を入れてしまえば良いでしょう。
c0 や c1 は、色の指定で、例えば
Color c0=new Color(255,255,230); Color c1=Color.LIGHT_GRAY;という感じで良いのではないかと思います。

Java だとお手軽に作れるのでありがたいですね。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)