Wyszukiwanie po nazwie wiersza z jTable

Wyszukiwanie po nazwie wiersza z jTable
C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Mam oto taki problem :
Mam stworzoną tabele jTable2 wypełnioną przykładowymi danymi typu String. model tabeli :(DefaultTableModel)
Dodałem też komponent jTextField1.

I teraz chciałbym zrobić tak żeby po wduszeniu buttona program pobierał tekst z jTextField i zaznaczył wiersz w jTable który zawiera taką samą treść co jTextField.
Na chłopski rozum : po uruchomieniu programu wpisuje Ala w jTextField, klikam buttona i zaznacza mi w jTable wiersz w którym znajduje sie Ala.

Prosił bym pilnie o pomoc bądź jakieś wskazówki.
Z góry dziękuje

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Próbowałem w ten sposób ,jednak cały czas wyrzuca ze nie znaleziono elementu

String b = jTextField1.toString();
for(int i=0;i<jTable2.getRowCount();i++) {
String a = (String) jTable2.getValueAt(i, i);
if (b.equals(a)){ jTable2.setRowSelectionInterval(i, i);

        }else{
            int WARNING_MESSAGE = 0;
            JOptionPane.showMessageDialog(null, "Nie znaleziono elementu ","Uwaga!",WARNING_MESSAGE);
}
}
}
szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0
Kopiuj
for(int i=0;i<table.getRowCount();i++) {
   for(int j = 0; j < table.getColumnCount(); j++){
      if (table.getValueAt(i, j).equals(b))
         System.out.println("jest");
      else
         System.out.println("niema");
   }
}

Przechodzenie po kolumnach i wierszach. A nie tylko po jednym z nich. Pozmieniałem nazwy zmiennych na swoje jakby coś.
Sprawdzałeś, działa?

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Faktycznie przechodziłem tylko po wierszach. Dodałem przejście również po kolumnach jedak cały czas ten sam problem. Nie znajduje nic w tabeli. Może źle pobieram wartość z jTextField ?

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
String b = jTextField1.toString();
for(int i=0;i<jTable2.getRowCount();i++) {
for(int j = 0; j < jTable2.getColumnCount(); j++){
if (jTable2.getValueAt(i, j).equals(b)){
jTable2.addRowSelectionInterval(i, j);
}else{
int WARNING_MESSAGE = 0;
JOptionPane.showMessageDialog(null, "Nie znaleziono elementu ","Uwaga!",WARNING_MESSAGE);
}
}
}
}

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
1
Kopiuj
String b = jTextField1.toString();

Wypisz sobie wcześniej tego Stringa z ciekawości. Prawdopodobnie zawiera nazwę JTextField'a zamiast tego co się w nim znajduje.

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Faktycznie po nadaniu stringa w kodzie zadziałało, jednak zaznaczyło wiersz w którym znajduje się b i dodatkowo dwa poniżej w których nie ma wartości b

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

String b = jTextField1.getText();

i pobiera już wartość z textFielda a nie jego nazwe, jednak cały czas nie wiem dlaczego zaznacza dodatkowe 2 wiersze

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

oto cały kod na wyszukiwanie w tabeli i zaznaczenie wiersza

Kopiuj
 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
     
        String b = jTextField1.getText();
        for(int i=0;i<jTable2.getRowCount();i++) {
        for(int j = 0; j < jTable2.getColumnCount(); j++){
        if (jTable2.getValueAt(i, j).equals(b)){
        jTable2.addRowSelectionInterval(i, j);
      }
      }
      }
    }        
szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
1

Gdzieś w kodzie:

Kopiuj
table.setCellSelectionEnabled(true);

I później:

Kopiuj
if (table.getValueAt(i, j).equals(b))  
   table.changeSelection(i, j, true, false);
C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Dziękuje bardzo za pomoc :) Teraz działa jak należy :)
a tak nawiasem mówiąc można jakoś zrobić żeby wiersz się odznaczał jeśli kliknie się gdzieś poza jTable ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.