Это возможно, хотя я не знаю, рекомендуется ли это. Мне удалось заставить его работать, попросив представление обновить все, кроме самого верхнего компонента JFileChooser (так как это заменит все компоненты выбора на Nimbus, которые вам не нужны).
Я бы расценил это как хак, который может работать, а может и не работать, в зависимости от внешнего вида Windows. Он в значительной степени опирается на весь JFileChooser, создаваемый компонентами Swing. Если он когда-либо был изменен для использования более прямого нативного рендеринга (т.е. Java просит Windows нарисовать значительную часть выбора), он не будет работать. Не знаю, насколько хорошо этот трюк будет работать с другими компонентами.
В любом случае, этот код, похоже, работал с JDK 7:
package test;
import java.awt.Component;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel; //Or use com.sun.... if you are using JDK < 7
public class LAFTester
{
public static void main(String... args)
throws Exception
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFileChooser chooser = new JFileChooser();
chooser.updateUI(); //Create UI objects
UIManager.setLookAndFeel(NimbusLookAndFeel.class.getName()); //Now set look and feel
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); //works with metal as well
refreshUI(chooser, false);
chooser.showOpenDialog(null);
}
private static void refreshUI(JComponent c, boolean includeParent)
{
if (includeParent)
c.updateUI();
for (int i = 0; i < c.getComponentCount(); i++)
{
Component child = c.getComponent(i);
if (child instanceof JComponent)
{
refreshUI((JComponent)child, true);
}
}
}
}