Java JTabbedPane插入颜色
我想知道如何获得JTabbedPane插图的颜色。 我似乎无法获得这种颜色。 我做的每一次尝试都得到236,236,236这是外框颜色,其中内框颜色约10暗,227,227,227(使用内置的苹果颜色计)。
我正在使用UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())设置外观;
您可以在我在互联网上找到的图像中看到这一点。 http://pagesofinterest.net/wordpress/wp-content/uploads/2009/06/Quaqua-Maven-Netbeans.jpg“Panel’s Title”这个词是我得到的颜色较浅的区域对我没用。 在圆角内是我想要获得的深色。 我试着让内容窗格的颜色无济于事。
感谢你的帮助!
**编辑:**添加代码! 如你所见,我试图让圆角内的区域颜色(如果你在Mac上)不是框架的颜色或说“1”“2”的标签。 我附上了一张照片,我正在尝试获取“Here”部分的背景颜色谢谢!
import java.awt.Container; import javax.swing.JFrame; import javax.swing.JTabbedPane; import javax.swing.UIManager; public class main { JFrame frame; Container c1 = new Container(); Container c2 = new Container(); JTabbedPane top = new JTabbedPane(); static main GUI; public void createGUI(){ frame = new JFrame(); Container c = frame.getContentPane(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); top = new JTabbedPane(JTabbedPane.TOP); top.setFocusTraversalKeysEnabled(false); top.setFocusable(false); top.addTab("1", c1); top.addTab("2", c2); frame.setSize(315,450); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setResizable(true); c.add(top); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) {} GUI = new main(); GUI.createGUI(); } }
编辑: camickr,这是UIManager默认值的屏幕截图。 不幸的是,没有任何颜色是插入的正确颜色。
您可以使用UIMangaer默认值来查找颜色。
您可以覆盖paintComponent()
以在选项卡的背景中使用GradientPaint
,如下所示。 几点说明,
-
让内容采用其内容的首选大小,如此处所示。
-
在事件派发线程中构造GUI。
-
使用传统的Java名称。
附录: 元素并不总是在同一个地方,所以我不知道得到什么颜色的地方 。
听起来你想要匹配TabbedPaneUI
委托内部使用的颜色。 一种方法如下:
-
渲染组件的
BufferedImage
,如下所示。 -
确定
top
相对于c1
top
的坐标。Point p = SwingUtilities.convertPoint(c1, 0, -1, top);
-
使用
getRGB()
获取颜色,如下所示; 使用Zoom
来validation结果。
import java.awt.Color; import java.awt.Container; import java.awt.EventQueue; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; /** @see https://stackoverflow.com/a/16625260/230513 */ public class Main { JFrame frame; Container c1 = new GradientPanel(); Container c2 = new GradientPanel(); JTabbedPane top = new JTabbedPane(); private static class GradientPanel extends JPanel { public GradientPanel() { this.add(new JLabel("Here")); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; GradientPaint p = new GradientPaint(0, 0, Color.white, getWidth(), getHeight(), Color.gray); g2d.setPaint(p); g2d.fillRect(0, 0, getWidth(), getHeight()); } } public void createGUI() { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); top = new JTabbedPane(JTabbedPane.TOP); top.addTab("1", c1); top.addTab("2", c2); frame.add(top); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Main().createGUI(); } }); } }