トランの毎日迷宮

Tech系ブログを目指すもの

【Eclipse】Eclipseでカスタムコントロールを作ろうとした【GUIプログラミング】

こんばんにちございます。

トランです。

今回は自分への覚書。

Eclipseで、GUIアプリケーション作るときにJLabelをちょっといじって貼り付けると現在時刻を表示してくれるようになっているカスタムコントロールを作ろうとしていたんですね。で、まぁいろいろダメなとこはあるかもですが作ったのが↓↓↓

package myCon;package myCon;
import java.text.SimpleDateFormat;import java.util.Timer;import java.util.TimerTask;
import javax.swing.JLabel;
public class DispTimeLabel extends JLabel {
private String _str = "";
public String getFStr() { return this._str; } public void setFStr(String arg) { this._str = arg; }
private SimpleDateFormat sdf ; private String timeStr = "";
public TimerTask task = new TimerTask() { @Override public void run() { timeStr = sdf.format(System.currentTimeMillis()); bindTime(); } };
public DispTimeLabel() { this._str = "hh:mm:ss"; sdf = new SimpleDateFormat(_str); startTime(); }
public void bindTime() { this.setText(timeStr); }
public void startTime() { Timer timer = new Timer(); timer.schedule(task, 1000,1000); }
}

なんかうまく貼りつかないな。。。

まぁそれは置いといて、やりたいことはJLabelを継承してTimerTaskとTimerつかって毎秒ごとに現在時刻を表示させる。ってことなんですよ。で、ちょっと欲を出してこの表示形式をプロパティから設定できるようにならんかなーとセッターとゲッターもかいてみたんですね。

するとまぁこんな感じに

f:id:trantran1021:20190527012659j:plain

プロパティの所にset以下の文字列で出てきたわけです。

あ、これはいじったJLabelと同じパッケージにテスト用のJFrame継承したクラスを作ってそこに張り付けたときのプロパティ画面ですよ。

そうそう、作ったカスタムコントロールって↓↓↓↓

f:id:trantran1021:20190527013042j:plain

↓↓↓↓

f:id:trantran1021:20190527013036j:plain

から選択できるって知ってました?選択したら貼り付けですね。

ちょっと横道にそれちゃったけど、本題に戻るとプロパティに項目は上がりました。

さぁ値を"yyyy/MM/dd"にした、、、んだけどうまくいかなかった。お察しですが

テスト用のクラスのコードを覗くと

f:id:trantran1021:20190527013417j:plain

こうなっているんですよね。newした後になにしてもだめだろってハナシですな、、、

もう一個引数アリのコンストラクタ作って対応するかな。。。

 

そんなわけで、おしまい。