Wyszukiwanie po nazwie wiersza z jTable

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

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);
}
}
}
0
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?

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

1
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.

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

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

0

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

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

Gdzieś w kodzie:

table.setCellSelectionEnabled(true);

I później:

if (table.getValueAt(i, j).equals(b))  
   table.changeSelection(i, j, true, false);
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 ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1