- PR -

JComboBoxの外観を変更したいです。

1
投稿者投稿内容
いい気分
会議室デビュー日: 2008/10/06
投稿数: 2
投稿日時: 2008-10-27 17:06
現在NetBeansによりWindowsアプリケーションを開発中です。
開発環境はWindows XPです。
完成したアプリケーションをVistaにインストールし実行したところ、
ボタンとコンボボックスの外観がとても似ていました。
コンボボックスをXP風にしたいと考えています。
L&Fはあまり変更したくはありません。
(もしコンボボックスのみ変更可ならば考えますが。)
どのようにしたらよいか、ご教授ください。

また、他にいいアイディアなどがありましたら教えていただけると幸いです。

よろしくお願いします。

[ メッセージ編集済み 編集者: いい気分 編集日時 2008-10-28 11:23 ]
未記入314032
会議室デビュー日: 2008/10/14
投稿数: 9
投稿日時: 2008-10-28 15:21
(解決策ではありません)

以下の話は、Swing で WindowsLookAndFeel を使用されていると
仮定してでの話ですので、違う場合には無視してください。

Javaのソースを追ってみたのですが、L&Fを変更せずに
実現するには、UXTHEME.DLLに手を入れる必要がありそうで、
その方法では得るものより失うもののほうが多くなりそうです。

そのため、WindowsLookAndFeel をベースにコンボボックスのUIだけ
差し替えた専用のL&Fを作成されたほうがよいのではないでしょうか?
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2008-10-28 15:53
JComboBoxのUIを変更したい場合、以下のようにします。
コード:

UIManager.getDefaults().put("ComboBoxUI", "使用したいUIのクラス名");



特定のコンポーネントインスタンスのUIだけを変更したい場合は、
JComponent#setUI()で構いません。

[ メッセージ編集済み 編集者: sawat 編集日時 2008-10-28 16:07 ]
未記入314032
会議室デビュー日: 2008/10/14
投稿数: 9
投稿日時: 2008-10-28 16:10
ためしにコンボボックスのUIを作ってみました。
コード:
import com.sun.java.swing.plaf.windows.WindowsComboBoxUI;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;

public class NonVistaComboBoxUI extends WindowsComboBoxUI {

    public static ComponentUI createUI(JComponent c) {
        return new NonVistaComboBoxUI();
    }

    public void paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus) {
        final Color background;
        if (hasFocus) {
            background = UIManager.getColor("ComboBox.selectionBackground");
        } else {
            background = UIManager.getColor("ComboBox.background");
        }
        g.setColor(background);
        g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
    }
}

いい気分
会議室デビュー日: 2008/10/06
投稿数: 2
投稿日時: 2008-10-28 19:30
みなさん、返信どうもありがとうございます。
ComboBoxのUIを変更することで解決いたしました。

実際コンボボックスUIを作成くださる方までいるとは思わず、
とても感激しております。

どうもありがとうございます。
これからもよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)