Tabelka i obsługa myszy?

0

Mam model tabelki:

class ModelTabelki extends AbstractTableModel
{
Object[][] data;
Object[] naglowek;
public ModelTabelki(Object[][] dat, Object[] nag)
{
data = dat;
naglowek = nag;
}
public int getColumnCount()
{
if(naglowek!=null)
return naglowek.length;
return 0;
}
public int getRowCount()
{
if(data!=null)
return data.length;
return 0;
}
public String getColumnName(int col)
{
return naglowek[col].toString();
}
public Object getValueAt(int row, int col)
{
return data[row][col];
}
}

Do tabelki wczytuje dane pobrane z pliku jako obiekty ArrayListy:

personnel = new ArrayList<pracownik>(EmployeeListDecorator.readList(fileName));
String[][] dane=new String[personnel.size()][2];
for (int i=0;i<personnel.size();i++)
for (int j=0;j<2;j++)
{ dane[i][0]=personnel.get(i)._imie;
dane[i][1]=personnel.get(i)._haslo;}
table.setModel(new ModelTabelki(dane,nag));

No i wyświetla mi się tabelka z danymi ;)
Mam też metode:

dodaj_pracownikow.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{

                };
        });

Która ocebnie nic nie robi wcześniej zwiększała liczbe kolumn.
Teraz pytanie jak zrobić aby gdy klikne myszka na moja tabelke, zaznacza sie wiersz(taka juz jest) Ale ja chciałbym aby przy kliknięciu na ten wiersz został pobrany jeden z jego atrybutów w tym przypadku chce aby zostal pobrany atrybut _imie obkektu Pracownik z listy personnel wyświetlanej w tabelce. Ale ten właśnie podświetlnoy.

Domyślam się ze musze dodać coś do modelu Tabelki i metody MouseListener ale poczytałem juz dokumentacjie rożne fora i nic nie potrafie odszukac. Bardzo prosze o pomoc.

0

Nie sprawdzałem ale ja bym próbował tak:

public void mouseClicked(MouseEvent e)
{
    JTable tabela=(JTable) (e.getSource());                         
    int row=tabela.getSelectedRow();
    .............
}
0

Działa świetnie, wielkie dzięki ;)

0

Pobiera numer wiersza co w zupełności wystarcza ;) ale tak z czystej ciekawości czy jest jakaś metoda która bezpośrednio pobiera wartość podświetlonego atrybutu w wierszu?

0

I jeszcze z których metod korzystać przy 2krotnym kliknieciu na obiekt a ktorym jedynie przy podswietleniu?
Mam takie:

void mouseClicked(MouseEvent e)
Invoked when the mouse has been clicked on a component.
void mouseEntered(MouseEvent e)
Invoked when the mouse enters a component.
void mouseExited(MouseEvent e)
Invoked when the mouse exits a component.
void mousePressed(MouseEvent e)
Invoked when a mouse button has been pressed on a component.
void mouseReleased(MouseEvent e)
Invoked when a mouse button has been released on a component.

Niby wszystko jasne ale gdy jakos wszystkie działaja przy kliknieciu ;/ a potrzebowałbym taka ktora dzial przy 2 krotnym kliknieciu?

0

pamiętaj, że jeżeli chcesz pobrać dane bezpośrednio z modelu skonwertuj numer wiersza do modelu (ten wyciągany jest z widoku i może się różnić).

int selectedRow = table.table.convertRowIndexToModel(table.getSelectedRow());
0
public void mouseClicked(final MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON1 && 
            e.getClickCount() == 2) {
        // kliknieto 2x lewym przyciskiem myszki!
    }
}

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