我想知道如何获得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 Defaults的屏幕截图。不幸的是,插入物中没有任何颜色是正确的颜色。
答案 0 :(得分:2)
您可以使用UIMangaer Defaults查找颜色。
答案 1 :(得分:1)
您可以覆盖paintComponent()
以在标签背景中使用GradientPaint
,如下所示。几点说明,
让内容采用其内容的首选大小,如here所示。
使用传统的Java名称。
附录:元素并不总是在同一个地方,所以我不知道获取颜色的地方。
听起来您想要匹配TabbedPaneUI
委托内部使用的颜色。一种方法如下:
渲染BufferedImage
组件,如图here所示。
确定Point
中top
相对于c1
顶部的坐标。
Point p = SwingUtilities.convertPoint(c1, 0, -1, top);
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();
}
});
}
}