我正在使用Flamingo功能区和Substance Office 2007的外观和感觉.
当然,现在每个控件都具有这种外观和感觉,甚至是对话框上的控件.
我想要的是类似于Office 2007,其中的色带具有Office 2007外观,但其他控件保持其原生的Vista/XP外观.
是否可以为某些控件指定不同的外观?也许使用某种链接或代理外观和感觉?
出于某种原因,我们使用com.sun.java.swing.plaf.windows.WindowsComboBoxUI在 Java 5.0 到 Java 8.0 的 Windows/Linux/Mac OS 平台上工作的类
从 Java 10 和 Java 11 开始(我们将坚持它作为 LTS)这个类对类加载器不可见:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsComboBoxUI
at xxx.YYY.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.java.swing.plaf.windows.WindowsComboBoxUI
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我们怎样才能让它工作?
有没有人知道如何使用本机Windows外观呈现MenuStrips,具体取决于用户使用的操作系统版本?
目前的渲染没有做到......
我目前正在使用第三方控件,可以使用MainMenu和ContextMenu而不是我正在寻找的,MenuStrip ...
物质外观有问题.我正试图将Office 2007 LAF设置为这里所描述的.
try
{
UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel");
}catch(Exception ex)
{
System.out.println("Exception:"+ ex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我得到异常:线程"main"中的异常java.lang.NoClassDefFoundError:org/pushingpixels/trident/ease/TimelineEase
我究竟做错了什么?有人有物质LAF的经验吗?
C/C++ GUI库上有很多页面,但是我很难找到具有原生外观和原生感觉的页面.
我看过GTk +,问题是,虽然那些模仿Windows看起来很好,但他们感觉不像Windows窗口 - 因为它们不是.例如,按钮不会像在Windows 7中那样在悬停时淡入; 它们突然变得突出显示,因为它们实际上只是自定义绘制的项目,看起来像按钮.
有没有人知道任何实际使用本机控件的轻量级跨平台GUI库(因此与操作系统无缝集成),而不仅仅是尝试模拟它们?(我需要它是轻量级的,所以我可以静态链接它,而无需将50 KB程序转换为2 MB程序.)
想要重新标记标记或拇指JSlider而不是标准灰色.我怎样才能做到这一点?
Java 6中的本机Windows LookAndFeel似乎错误地调整了某些字体的大小.
测试程序:
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Test {
public static void main(String[] arg) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
e.printStackTrace();
}
final JMenuBar mb = new JMenuBar();
final JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
mb.add(file);
final JToolBar toolbar = new JToolBar();
final JButton button = new JButton("Button");
toolbar.add(button);
final JLabel label = new JLabel("Basic Colors");
final JPanel panel = new JPanel(new BorderLayout()); …Run Code Online (Sandbox Code Playgroud) 如何设置文本背景颜色JOptionPane?
图片:

UIManager UI = new UIManager();
UI.put("OptionPane.background", Color.white);
UIManager.put("Button.background", Color.white);
UI.put("Panel.background", Color.white);
UI.put("OptionPane.foreground", Color.white);
UI.put("OptionPane.messagebackground", Color.white);
UI.put("OptionPane.textbackground", Color.white);
UI.put("OptionPane.warningDialog.titlePane.shadow", Color.white);
UI.put("OptionPane.warningDialog.border.background", Color.white);
UI.put("OptionPane.warningDialog.titlePane.background", Color.white);
UI.put("OptionPane.warningDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.questionDialog.border.background", Color.white);
UI.put("OptionPane.questionDialog.titlePane.background", Color.white);
UI.put("OptionPane.questionDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.questionDialog.titlePane.shadow", Color.white);
UI.put("OptionPane.messageForeground", Color.white);
UI.put("OptionPane.foreground", Color.white);
UI.put("OptionPane.errorDialog.border.background", Color.white);
UI.put("OptionPane.errorDialog.titlePane.background", Color.white);
UI.put("OptionPane.errorDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.errorDialog.titlePane.shadow", Color.white);
JOptionPane.showMessageDialog(null, "Hello world", "HELLO WORLD", JOptionPane.INFORMATION_MESSAGE);
Run Code Online (Sandbox Code Playgroud) 我添加jgoodies-looks-2.5.3.jar到我的构建路径并启动它
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel("com.jgoodies.looks.windows.WindowsLookAndFeel");
ExpenseManagerGUI frame = new ExpenseManagerGUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:(如何解决这个问题?)
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/jgoodies/common/base/SystemUtils
at com.jgoodies.looks.common.ShadowPopupFactory.install(ShadowPopupFactory.java:116)
at com.jgoodies.looks.windows.WindowsLookAndFeel.initialize(WindowsLookAndFeel.java:199)
at javax.swing.UIManager.setLookAndFeel(Unknown Source)
at javax.swing.UIManager.setLookAndFeel(Unknown Source)
at de.mayerhofersimon.expensemanager.ExpenseManagerGUI$2.run(ExpenseManagerGUI.java:94)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) …Run Code Online (Sandbox Code Playgroud)