JTabbedPane:新的Tab以不同的颜色直到第一次打开

时间:2016-07-10 22:30:14

标签: java swing jtabbedpane

我有一个带有JTextArea的JTabbedPane。方法创建另一个选项卡并将其添加到JTabbedPane。现在我要实现,新创建的选项卡会获得另一种颜色,直到它第一次打开,就像在聊天室中显示来自特定用户的新消息一样。 我真的不知道如何实现这一点。我很想使用while循环,但它不起作用

String name = "...";
JTabbedPane tabs = new JTabbedPane();
JTextArea textarea = new JTextArea();
textarea.setEditable(false);
textarea.setLineWrap(true);
JScrollPane jScrollPane = new JScrollPane(textarea);
jScrollPane.setPreferredSize(new Dimension(300, 300));
tabs.add(name, jScrollPane);
tabs.setBackgroundAt(tabs.indexOfTab(name),Color.GREEN);
        while(true){
            if(tabs.getSelectedIndex() == tabs.indexOfTab(name)){
                tabs.setBackgroundAt(tabs.indexOfTab(name),Color.GRAY);
                break;
            }
        }

1 个答案:

答案 0 :(得分:2)

从此example开始,以下更改会产生下图所示的效果。每个标签以Color.lightGray开头,ChangeListener在第一次选中每个标签时将背景颜色更改为Color.red.darker()。你可以在应用程序的数据模型的监听器中做类似的事情;审查了几种方法here

public TabColors() {
    for (int i = 0; i < MAX; i++) {
        Color color = Color.lightGray;
        pane.add("Tab " + String.valueOf(i), new TabContent(i, color));
        pane.setBackgroundAt(i, color);
    }
    pane.setSelectedIndex(-1);
    pane.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            pane.setBackgroundAt(pane.getSelectedIndex(), Color.red.darker());
        }
    });
    this.add(pane);
}

image