UIManager を変更して、これらのばかげた緑色の四角形をなくそうとしています。これのルック アンド フィールをユーザーに変更するにはどうすればよいですか? システム依存ですか?私のコードをコンパイルしていた他の誰かが一定の勾配を持っていました。理想的には、小さなブロックではなく、ただの正方形です。
ありがとう
UIManager を変更して、これらのばかげた緑色の四角形をなくそうとしています。これのルック アンド フィールをユーザーに変更するにはどうすればよいですか? システム依存ですか?私のコードをコンパイルしていた他の誰かが一定の勾配を持っていました。理想的には、小さなブロックではなく、ただの正方形です。
ありがとう
システム (ユーザー) のルック アンド フィールに設定してみましたか?
ルック アンド フィールを設定する最も簡単な方法は、呼び出し後に GUI を起動することです。
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
// ...
}
そうは言っても、上記は Windows XP のテーマのように見えますが、実際にはシステム (ユーザー) のテーマである可能性があります。私は通常、よほどの理由 (顧客/ユーザーの要件など)がない限り、GUI のカスタム テーマには近づきません。
つまり、上記のコードにより、システムに依存するようになり、ユーザーの期待に一致するため、これは良いことです。
「これらの愚かな見た目の緑色の四角」は、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に別の外観を与えていますが、完全に機能します。
コンポーネントを作成する前にルックアンドフィールを変更し、その作成直後に前のコンポーネントを復元するだけです。
以下のコードを編集 すると、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 を拡張してこのメソッドをオーバーライドすることです。
Java ルック アンド フィールの包括的な説明は、Sun Java のドキュメント ( Java, Look and Feel Design Guidelines in pdf) にあります。