Java 更改Swing进度条的外观和感觉

Java 更改Swing进度条的外观和感觉,java,swing,look-and-feel,jprogressbar,Java,Swing,Look And Feel,Jprogressbar,我一直试图改变UIManager,让这些看起来愚蠢的绿色方块消失。我如何向用户更改它的外观和感觉?它依赖于系统吗?另一个编译我代码的人有一个恒定的梯度。理想情况下,它只是一个实心正方形,而不是较小的方块 谢谢 您是否尝试将其设置为系统(用户)的外观 设置外观的最简单方法是在调用以下命令后启动GUI: try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e

我一直试图改变UIManager,让这些看起来愚蠢的绿色方块消失。我如何向用户更改它的外观和感觉?它依赖于系统吗?另一个编译我代码的人有一个恒定的梯度。理想情况下,它只是一个实心正方形,而不是较小的方块

谢谢


您是否尝试将其设置为系统(用户)的外观

设置外观的最简单方法是在调用以下命令后启动GUI:

try
{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
    // ...
}
话虽如此,上述内容似乎是Windows XP主题,实际上可能是系统(用户)主题。我通常远离GUI中的自定义主题,除非有很好的理由(例如,客户/用户需求)

也就是说,上面的代码使其依赖于系统,这很好,因为它符合用户的体验。

Edit 下面的代码更改整个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时,不可能只影响一个JC组件。你可以在整个JFrame中更改你的L&F,或者你可以


实现目标的另一种方法是研究java,找到将JProgressBar图像添加到组件中的位置,并通过扩展JProgressBar来覆盖此方法。

Sun java文档可以在这里找到java外观的全面描述:pdf格式

“这些看起来愚蠢的绿色方块”是Windows XP外观和感觉的元素。如果希望它们看起来不同,可以更改此特定组件的外观

只需使用以下解决方法:

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提供了另一种外观,它工作得非常完美


您只需在创建组件之前更改外观,并在创建组件之后恢复上一个组件。

Netbeans?那只是一个IDE。你是说秋千吗?是的。我使用netbeans作为编辑器,并提到它,以防有一种简单的方法在其中设置它。但是,如果能够只更改/定制进度条(而不是整个应用程序)的外观和触感听起来就像是在问如何更改Netbeans的外观。这毫无意义。这和问如何改变记事本的外观是一样的。我已经编辑了title+标记。我已经尝试过了,并且成功了(这是默认设置)。旧的schoolejavaone看起来过时了,但确实更改了进度条。感谢您提供的信息。我想补充一点,pickypg条目中的重要提示是在加载应用程序之前编写命令。我在应用程序加载后但在显示之前尝试过,但它不起作用。对于其他定制,piesnikowski下面的回答就是一个例子。我想我必须下载这个外观和感觉,并把所有的东西都安装好,使它看起来像一台mac电脑,我想这会改变我整个应用程序的外观,但实际上我只是想可能只改变我的进度条。Klepoatra你说得对。这是我项目中的C&P,但现在我尽我所能编辑了我的文章。干杯!:)非常好,谢谢!我不会想到这样的事情是可能的。