goo blog サービス終了のお知らせ 

javaアプリ推進委員会

javaアプリの作成を推進するページです。

swingのコンポーネントで表示されるフォントをプレーン(plain)にする

2007-12-30 09:10:48 | Java
swingでGUIを作成すると、各コンポーネントに表示される文字列のフォントはboldで表示されます。あまり見た目がよろしくないので、plainに変える方法を以下に示します。

アプリケーションのエントリポイント(main)のはじめで
UIManager.put("swing.boldMetal", Boolean.FALSE);
としておくと、フォントがplainに変わります。

before


after


サンプルソースコード

import java.awt.*;
import javax.swing.*;

public class FontPlainComponents {
    private JFrame jframe;
    
    public FontPlainComponents() {
        JFrame jframe = new JFrame();
        
        // メニューバーの生成
        JMenuBar jmenubar = new JMenuBar();
        
        // メニューバーにメニューを追加
        jmenubar.add(new JMenu("ファイル"));
        jmenubar.add(new JMenu("編集"));
        
        // JFrameにメニューバーをセットする
        jframe.setJMenuBar(jmenubar);
        jframe.setLayout(new GridLayout(5, 3));
        
        // JButtonを15個配置
        for (int i = 1; i <= 15; i++) {
            jframe.add(new JButton(""+i));
        }
        jframe.setSize(640, 480);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jframe.setVisible(true);
    }
    
    /**
     * アプリケーションのエントリポイントです。
     */
    public static void main(String args[]) {
        UIManager.put("swing.boldMetal", Boolean.FALSE);
        new FontPlainComponents();
        
    }
}


ファイルのドロップが可能なJFrame

2007-10-08 17:23:39 | Java
JFrameでエクスプローラなどからファイルをドロップされたときに、容易にドロップされたファイルを処理することができるようにした抽象クラスです。サブクラスでfileDropを定義することで、ドロップされたファイルを処理することができます。

import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

/**
 * ファイルのドロップを可能としたフレームです。
 * サブクラスでfilDropメソッドを定義してください。
 */
public abstract class DnDFrame extends JFrame implements DropTargetListener {
    /**
     * コンストラクタです。
     */
    public DnDFrame() {
        new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this, true);
    }
    
    /**
     * ファイルがドロップされた際に呼び出されます。
     * ListからFileでキャストして取り出してください。
     * @param files ファイルのリスト
     */
    public abstract void fileDrop(List files);
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dragEnter(DropTargetDragEvent dtde) {
        if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
        }
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetEvent
     */
    public void dragExit(DropTargetEvent dte) {
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dragOver(DropTargetDragEvent dtde) {
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDropEvent
     */
    public void drop(DropTargetDropEvent dtde) {
        try {
            if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                
                fileDrop((List)dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
                
                dtde.dropComplete(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
            dtde.dropComplete(false);
        }
    }
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dropActionChanged(DropTargetDragEvent dtde) {
    }
}