2012-05-06 1 views
3

Я щелкнул правой кнопкой мыши JTable и вставил код в «пост-код слушателей» в ужасном клофе.Netbeans: Как добавить слушателя valueChanged в JTable из конструктора GUI «design»?

Я не вижу вариант, чтобы добавить

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 
    public void valueChanged(ListSelectionEvent evt) { 

на «события» в «дизайн» вид для JTable. Я уверен, что есть способ добавить valueChanged (ListSelectionEvent evt) из дизайна, но как?

Возможно, это bug? события изменения выбора

Row производятся из ListSelectionModel JTable, само по себе не JTable - поэтому событие не может быть представлена ​​в инспектор компонентов (как в случае JTable). Обработка этого события должна выполняться вручную, например, . как:

jTable1.getSelectionModel().addListSelectionListener(
    new javax.swing.event.ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent evt) { 
      customRowSelectionEventHandler(evt); 
     } 
    } 
); 

Хотя, может быть, есть способ, чтобы получить ListSelectionModel для JTable за пределами «синих», «удалось» код?

+0

Что именно вы спрашиваете? В вопросе вопроса нет вопросительного знака. Кроме того, в качестве побочного примечания, [конденсируйте свой код немного] (http://meta.stackexchange.com/a/129787/181088) – gobernador

+1

Как добавить слушателя valueChanged в JTable через представление «дизайн» Netbeans? Я не вижу этого параметра в построителе GUI. – Thufir

+0

@Thufir: исходный файл дизайнера может быть скомпилирован, но для изменения дизайна требуется соответствующий файл '.form'. Даже тогда, это боль, чтобы восстановить. Кроме того, ничего не возникает, когда вы используете конструктор для _everything_, а также 'GroupLayout' обязательно. Это силовая пила: используйте ее, чтобы вырезать протекторы по длине, а не вырезать шахматные фигуры. – trashgod

ответ

5

0 Вы можете создать свой собственный ListSelectionListener в редактируемой части источника. Вы можете добавить экземпляр слушателя к модели выбора переменного класса jTable1 в Post-init Code собственности вашей таблицы:

jTable1.getSelectionModel().addListSelectionListener(new MyListener()); 

слушатель сам по себе может выглядеть следующим образом:

private static class MyListener implements ListSelectionListener { 

    @Override 
    public void valueChanged(ListSelectionEvent e) { 
     System.out.println(e.getFirstIndex()); 
    } 
} 
+0

это можно сделать с помощью редактора GUI netbeans. – Thufir

2

Возможно, вы можете расширить InputVerifier.

Это не совсем то, что он должен был делать, но вы могли бы адаптировать его для своих целей.

public class TableVerifier extends InputVerifier { 

    @Override 
    public boolean verify(JComponent input) { 
     assert input instanceof JTable : "I told you I wanted a table!"; 

     JTable inputTable = (JTable) input; 
     int numberColumns = inputTable.getColumnCount(); 
     int numberRows = inputTable.getRowCount(); 

     for (int column = 0; column < numberColumns; column++) { 
      for (int row = 0; row < numberRows; row++) { 
       //DO YOUR STUFF 
      } 
     } 
     return true; 
    } 
}