2

UIManager を変更して、これらのばかげた緑色の四角形をなくそうとしています。これのルック アンド フィールをユーザーに変更するにはどうすればよいですか? システム依存ですか?私のコードをコンパイルしていた他の誰かが一定の勾配を持っていました。理想的には、小さなブロックではなく、ただの正方形です。

ありがとう

ここに画像の説明を入力

4

4 に答える 4

4

システム (ユーザー) のルック アンド フィールに設定してみましたか?

ルック アンド フィールを設定する最も簡単な方法は、呼び出し後に GUI を起動することです。

try
{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
    // ...
}

そうは言っても、上記は Windows XP のテーマのように見えますが、実際にはシステム (ユーザー) のテーマである可能性があります。私は通常、よほどの理由 (顧客/ユーザーの要件など)がない限り、GUI のカスタム テーマには近づきません。

つまり、上記のコードにより、システムに依存するようになり、ユーザーの期待に一致するため、これは良いことです。

于 2011-05-04T19:38:28.280 に答える
2

「これらの愚かな見た目の緑色の四角」は、WindowsXPのLooknadFeelの要素です。それらを異なって見せたい場合は、この特定のコンポーネントのルックアンドフィールを変更できます。

以下の回避策を使用してください。

try {
    javax.swing.UIManager.setLookAndFeel(/* Look and Feel for your JProgressBar*/);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}

MyProgressBar = new javax.swing.JProgressBar();

try {
    javax.swing.UIManager.setLookAndFeel(/* Previous, main Look and Feel */);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}

このコードを使用してJFileChooserに別の外観を与えていますが、完全に機能します。

コンポーネントを作成する前にルックアンドフィールを変更し、その作成直後に前のコンポーネントを復元するだけです。

于 2013-03-16T09:33:51.150 に答える
0

以下のコードを編集 すると、JFrame 全体の L&F が変更されます。

static Main m;//Reference to JFrame to be updated
static String maxOSLookAndFeel = "ch.randelshofer.quaqua.QuaquaLookAndFeel";//Package of particular L&F    
private void MacOSLFjMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacOSLFjMenuItemActionPerformed
                    // TODO add your handling code here:
                    SwingUtilities.invokeLater(new Runnable() {

                        public void run() {
                            try {
                                UIManager.setLookAndFeel(maxOSLookAndFeel);
                                SwingUtilities.updateComponentTreeUI(m);
                                m.validate();
                            } catch (ClassNotFoundException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (InstantiationException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (IllegalAccessException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (UnsupportedLookAndFeelException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    });

                }//GEN-LAST:event_MacOSLFjMenuItemActionPerformed

Secundo: 私の意見では (何度もググったり経験を積んだりして)、新しい L&F をアタッチしている間、1 つの JComponent だけに影響を与えることは不可能です。JFrame 全体で L&F を変更するか、独自の Swing コンポーネントを作成できます。

目標を達成するもう 1 つの方法は、Javaソース コードを調べて、JProgressBar イメージがコンポーネントに追加されている場所を見つけ、JProgressBar を拡張してこのメ​​ソッドをオーバーライドすることです。

于 2011-05-04T20:07:08.447 に答える
0

Java ルック アンド フィールの包括的な説明は、Sun Java のドキュメント ( Java, Look and Feel Design Guidelines in pdf) にあります。

于 2011-08-15T14:50:15.203 に答える