Witam :)
Dopiero zaczynam swoją przygodę z Javą, dlatego proszę o pomoc. Nie wiem, jak pobrać zawartość pewnej komórki, znajdującej się w podświetlonym wierszu tabeli i np. w pierwszej kolumnie tej tabeli. Następnie chcę wstawić ten tekst do etykiety JLabel.
int row = table.getSelectedRow();
if (row != -1){ /* Cos jest zaznaczone */
int modelRow = table.convertRowIndexToModel(row); /* Potrzebne tylko, gdy jest sortowanie w tabeli */
String text = (String) table.getModel().getValueAt(modelRow, 0); /* Pobranie wartości */
}
Dziękuję za zainteresowanie.
Niestety wciąż nie mogę sobie poradzić :(
Wśród kilku klas mam między innymi takie:
klasa Uruchom wyświetla w okienku tabelkę (JTable tabela)
klasa OknoUsun wywołuje okienko, w którym są etykiety (np. JLabel etykieta01)
Chciałabym, aby w tej etykiecie pojawił się tekst z komórki tabeli.
Próbowałam jakoś dopasować Twój kod do moich potrzeb, ale zagmatwałam się.
Skorzystałem z kodu _krzysiek85 i tu masz pełny przykład:
public class RowTableTest {
public static void main(String[] args) {
JFrame f = new TableFrame();
}
static class TableFrame extends JFrame {
private static final Object[] columns = {"1", "2", "3", "4", "5", "6",};
private static final Object[][] tableData;
private JTextField textField;
private JTable table;
static {
tableData = new Object[6][6];
int value = 0;
for(int i=0; i<6; i++)
for(int j=0; j<6; j++)
tableData[i][j]=value++;
}
public TableFrame() {
table = new JTable(tableData, columns);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
if (row != -1){ /* Cos jest zaznaczone */
int modelRow = table.convertRowIndexToModel(row); /* Potrzebne tylko, gdy jest sortowanie w tabeli */
Object value =table.getModel().getValueAt(modelRow, col); /* Pobranie wartości */
textField.setText(String.valueOf(value));
}
}
});
add(table, BorderLayout.CENTER);
JPanel fieldPanel = new JPanel(new FlowLayout());
textField = new JTextField(20);
fieldPanel.add(textField);
add(fieldPanel, BorderLayout.SOUTH);
pack();
setVisible(true);
}
}
}
Pozdrawiam
Dziękuję za pomoc. :)
Może wiecie, dlaczego pojawia się błąd:
The method getSelectedRow() is undefinied for the type Uruchom oraz
The method getModel() is undefinied for the type Uruchom ?
Klasa Uruchom to moja klasa główna (main). Klasa Dane to klasa, w której mam tabelę LinkedList<Film>.
Próbuję w klasie Uruchom wpisać:
public int getSelectedRow() {
return 0;
}
public Dane getModel() {
return null;
}
Ale to chyba za mało :-/