我正在使用Java Swing开发一个桌面应用程序供我个人使用.我的应用程序需要一些漂亮的外观和感觉.如何使用Java或第三方API来完成?
我想在JTabbedPane中自定义选项卡的外观.
我想从最简单和最简洁的行为开始:没有边界,纯色.
问题是仍然存在不稳定性:标签略微重叠.

您会看到,自从选择了第二个选项卡后,它就会"脱颖而出".这是通过略微的边缘重叠来实现的.是否有(非常棘手的)方法来禁用此行为?
简单,可测试(只修复导入)代码:
public class TabbedPane_LookStudy extends JFrame{
public static void main(String [] args) throws UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
new TabbedPane_LookStudy().setVisible(true);
}
public TabbedPane_LookStudy() {
JTabbedPane tp = new JTabbedPane();
tp.setUI(new MyTabbedPaneUI());
add(tp);
tp.addTab("first",new JPanel());
tp.addTab("second", new JPanel());
tp.addTab("third", new JPanel());
setPreferredSize(new Dimension(180,100));
pack();
}
public static class MyTabbedPaneUI extends javax.swing.plaf.basic.BasicTabbedPaneUI {
@Override
protected void paintTab(Graphics g, int tabPlacement, Rectangle[] rects,
int tabIndex, Rectangle iconRect, Rectangle textRect) {
Color savedColor = g.getColor();
g.setColor(Color.PINK);
g.fillRect(rects[tabIndex].x, rects[tabIndex].y,
rects[tabIndex].width, rects[tabIndex].height);
g.setColor(Color.BLUE); …Run Code Online (Sandbox Code Playgroud) 是否可以使用单个JPanel多个标签项JTabbedPane?
例如:
JTabbedPanel tabs=new JTabbePanel();
JPanel panel=new JPanel();
JButton but=new JButton("TEXT");
but.addActionlistener(this);
panel.add(but)
tabs.add("First",panel);
tabs.add("Second",panel);
Run Code Online (Sandbox Code Playgroud)
一个ActionListener被添加到JTabbedPane通知的选项卡的变化方案(变化cur_tab到标签编号)
public void actionPerformed(..)
{ System.out.println("Now in "+cur_tab); }
Run Code Online (Sandbox Code Playgroud) JTabbedPane - 即使使用 BasicTabbedPaneUI 后也会显示选项卡边框。请让我知道如何更改以使选项卡之间不显示边框?有什么方法可以完全去除边框吗?
请向我发送代码片段。提前致谢。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
public class TabbedPaneTest implements Runnable {
@Override
public void run() {
final JTabbedPane pane = new JTabbedPane();
pane.addTab("A", createTab(Color.RED));
pane.addTab("B", createTab(Color.YELLOW));
pane.addTab("C", createTab(Color.BLUE));
pane.setUI(new BasicTabbedPaneUI() {
@Override
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
}
});
pane.setBackground(Color.WHITE);
pane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
pane.setForegroundAt(pane.getSelectedIndex(), Color.GREEN); …Run Code Online (Sandbox Code Playgroud) 我想改变我的标签的背景颜色JTabbedPane.我试着JTabbedPane.setBackgroudAt(0, Color.GRAY)和JTabbedPane.setBackgroud(Color.GRAY)和前景也一样,但没有任何反应.我更改了选项卡内面板的背景,仍然没有.

编辑1:我正在使用,UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");如果这可以帮助解决方案
编辑2:链接到示例,https://www.dropbox.com/s/0krn9vikvkq46mz/JavaApplication4.rar