我正试着打电话setBackground给它JPanel,以便它与我的颜色相匹配JFrame,但是颜色比我输入的颜色要亮一些.
我已经尝试过设置HSB,RGB,HEX代码,它们都给我相同的颜色,更亮我的颜色版本.
不太清楚如何获得我想要的颜色?
编辑:
我从Photoshop中获取颜色.我查找正确的颜色(我想要的)并复制HSB RGB或HEX代码.看起来它应该在Photoshop中,但java给我一个更明亮的颜色?
我用过java代码:
Color color = new Color(0x94b3c7);
jpanel.setBackground(color);
Run Code Online (Sandbox Code Playgroud) 我正在使用Flamingo功能区和Substance Office 2007的外观和感觉.
当然,现在每个控件都具有这种外观和感觉,甚至是对话框上的控件.
我想要的是类似于Office 2007,其中的色带具有Office 2007外观,但其他控件保持其原生的Vista/XP外观.
是否可以为某些控件指定不同的外观?也许使用某种链接或代理外观和感觉?
物质外观有问题.我正试图将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的经验吗?
我有一个扩展JFrame的Class MainWindow.在MainWindow我有一个JMenuBar.
我想在OSX上显示MenuBar(Apple符号旁边).这只适用,当我没有设置物质皮肤.是否可以使用Substance Skin并使用MacOS MenuBar?
我的代码:
//Set Menu for MacOS
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", name);
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
SubstanceSkin skin = new GraphiteGlassSkin();
SubstanceLookAndFeel.setSkin(skin); //WORKS WHEN I COMMENT THIS (WITHOUT SUBSTANCE SKIN)
JFrame.setDefaultLookAndFeelDecorated(false);
MainWindow mainWindow = new MainWindow(name);
mainWindow.setVisible(true);
}
});
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我正在使用BorderFactorySubstance UI主题Swing用户界面创建一个标题边框,我遇到了如下所示的异常.我试过LineBorder并且它完美地工作,但看起来Substance UI正在以某种方式干扰TitledBorder.边框绘图在paintComponentvia中完成:
if (getBorder() != null) {
getBorder().paintBorder(this, g, 0, 0, getWidth(), getHeight());
}
Run Code Online (Sandbox Code Playgroud)
这可能是不正确的.我的问题基本上是如何TitledBorder在不创建父母的情况下开始工作JPanel并将其设置为相反,这看起来像是一个副作用.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.pushingpixels.lafwidget.utils.RenderingUtils.desktopHints(RenderingUtils.java:113)
at org.pushingpixels.lafwidget.utils.RenderingUtils.installDesktopHints(RenderingUtils.java:85)
at org.pushingpixels.substance.internal.utils.border.SubstanceEtchedBorder.paintBorder(SubstanceEtchedBorder.java:132)
at javax.swing.border.TitledBorder.paintBorder(TitledBorder.java:330)
at javax.swing.JComponent.paintBorder(JComponent.java:947)
at javax.swing.JComponent.paint(JComponent.java:1055)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5213)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1493)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1424)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at …Run Code Online (Sandbox Code Playgroud) 我通过这样做来设定我的外观和感觉
private void setSubstanceSkin(String theme) {
try {
UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel());
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个堆栈跟踪:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.plaf.metal.MetalRootPaneUI cannot be cast to org.jvnet.substance.SubstanceRootPaneUI
at org.jvnet.substance.utils.SubstanceCoreUtilities.getTitlePane(SubstanceCoreUtilities.java:3590)
at org.jvnet.substance.title.ImageWrapperHeaderPainter.paintExtraBackground(ImageWrapperHeaderPainter.java:172)
at org.jvnet.substance.SubstanceFillBackgroundDelegate.update(SubstanceFillBackgroundDelegate.java:198)
at org.jvnet.substance.SubstanceMenuBarUI.__org__jvnet__substance__SubstanceMenuBarUI__container__update(SubstanceMenuBarUI.java:251)
at org.jvnet.substance.SubstanceMenuBarUI.update(SubstanceMenuBarUI.java)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
at java.awt.Window.paint(Window.java:3877)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677) …Run Code Online (Sandbox Code Playgroud) 我想用JOptionPanes 处理一些例外.这是主要方法:
public class MainRun {
public static void main(String args[]){
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(new SubstanceRavenGraphiteGlassLookAndFeel());
}catch (Exception e){
e.printStackTrace();
}
new MainGui().setVisible(true);
new Initialized().start();
new PriorityMessageQueue().start();
}
});
Run Code Online (Sandbox Code Playgroud)
MainGui是JFrame应用程序的主窗口().我在PriorityMessageQueue线程中处理了异常.
public class PriorityMessageQueue extends Thread {
@Override
public void run() {
while (true) {
try {
instantMessages = instant.getMobitelMessagesToBeSent();
} catch (Exception ex) {
JOptionPane.showMessageDialog(
null,
ex.getMessage(),
"Database Error",
JOptionPane.ERROR_MESSAGE);
}
...
Run Code Online (Sandbox Code Playgroud)
在我运行之后,我收到了一个错误
org.jvnet.substance.api.UiThreadingViolationException: Component creation must …Run Code Online (Sandbox Code Playgroud) 我正在使用物质L&F并且我已设置JComboBox为可编辑,以便我可以从其弹出窗口中选择我想要的值,或在其编辑器中键入新值.
键入一个新值工作正常,但如果我想从Combo编辑器中删除一个未命名的字母,然后单击Backspace来执行此操作,它会选择编辑器中的字母而不是删除它们.这是一个截图:
我希望Combo编辑器在输入键盘字母或退格键或删除键时像JTextField一样工作,那么有没有办法做到这一点?或者是什么导致了这个?
java ×9
substance ×9
swing ×8
backspace ×1
border ×1
invokelater ×1
jcombobox ×1
jcomponent ×1
joptionpane ×1
jpanel ×1
lf ×1
macos ×1