[Java]102 JButtonの継承

JButtonのToolTipTextの位置を調整するため、これを継承したJButtonExクラスを作成しました。

コンストラクタも自動的に継承されるものと思っていましたが、きちんと書かないとエラーになります。

public static class JButtonEx extends JButton {
		public JButtonEx(String str) {
			setText(str);
		}
		public JButtonEx() {
		}
		@Override
		public Point getToolTipLocation(MouseEvent e) {
			Point po = e.getPoint();
			po.x += 20;
			po.y -= 10;
			return po;
		}
	}

[Java]101 UIDefaultsの内容を出力

Look and Feelの自製を見据え、UIDefaultsの内容を出力してみました。

コードはGitHubにあったものに加筆してkeyだけでなくvalueも出力できるようにしました。

以下のようになります。

import java.util.Enumeration;
import java.util.TreeSet;
import javax.swing.UIDefaults;
import javax.swing.UIManager;

public class ListUIDefaultsKeys {
	public static void main(String args[]) throws Exception {
		UIManager.LookAndFeelInfo looks[] = UIManager.getInstalledLookAndFeels();

		for (UIManager.LookAndFeelInfo info : looks) {
			System.out.println("Installed L&F "+info.getName());
		}

		TreeSet<String> lafDefaultKeys = new TreeSet<>();
		UIDefaults defaults = UIManager.getDefaults();

		Enumeration<Object> newKeys = defaults.keys();
		while (newKeys.hasMoreElements()) {
				lafDefaultKeys.add(newKeys.nextElement().toString());
		}

		System.out.println("================== UIDefaults Keys & Values ==================");
		
		int i = 1;
		for (String key : lafDefaultKeys) {
				try {
						String value = defaults.get(key).toString();
						System.out.println(String.format("%03d", i) + " " + key );
						System.out.println("    " + value);
				} catch (Exception e){
						e.printStackTrace();
				}
				i++;
		}
	}
}
--------------------------------------------------

出力の一部
--------------------------------------------------
================== UIDefaults Keys & Values ==================
001 AbstractButton.click.textAndMnemonic
    クリック
002 AbstractDocument.addition.textAndMnemonic
    追加
003 AbstractDocument.deletion.textAndMnemonic
    削除
004 AbstractDocument.redo.textAndMnemonic
    やり直し
005 AbstractDocument.styleChange.textAndMnemonic
    スタイル変更
006 AbstractDocument.undo.textAndMnemonic
    元に戻す
007 AbstractUndoableEdit.redo.textAndMnemonic
    やり直し
008 AbstractUndoableEdit.undo.textAndMnemonic
    元に戻す
009 AuditoryCues.allAuditoryCues
    [Ljava.lang.Object;@4ac68d3e
010 AuditoryCues.cueList
    [Ljava.lang.Object;@4ac68d3e
011 AuditoryCues.noAuditoryCues
    [Ljava.lang.Object;@3339ad8e
<以下略>

参考サイト