我有一个带有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;
}
}
答案 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);
}