2016-07-10 4 views
0

У меня есть JTabbedPane с JTextArea. Метод создает другую вкладку и добавляет ее в JTabbedPane. Теперь я хочу реализовать, что новая созданная вкладка получает еще один цвет до тех пор, пока он не будет открыт в первый раз, например, в Chatroom, чтобы показать, что theres новое сообщение от конкретного пользователя. Я не знаю, как это реализовать. Я thried использовать While-цикл, но didn't работуJTabbedPane: новая вкладка разного цвета до первого раза открыта

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; 
      } 
     } 

ответ

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

+0

Что такое панель? Это JTabbedPane? Потому что я не могу использовать ChangeListener для JTabbedPane – Alex

+0

_ Начните с этого [пример] (http://stackoverflow.com/a/8752166/230513) _, да. В зависимости от модели данных вашего приложения вы можете использовать другой прослушиватель. – trashgod

+0

И какой я должен использовать? – Alex