JTable i mouselistener

0

Mam problem. Tworzę applet w którym znajduję się tabela. Chciał bym aby po kliknięcie na jakimś wierszu wykonała się określona akcja. Próbowałem już paru opcji ale niestety po kliknięciu żadna akcja się nie wykonała.
Aktualnie listener wygląda tak:

jTable1.addMouseListener( new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
System.out.println( "Row: " + jTable1.rowAtPoint(e.getPoint()) );
System.out.println( "Column: " + jTable1.columnAtPoint(e.getPoint()) );
}
});

I kliknięcie na jakiejś komórce nie wykonuje nic.

Proszę o pomoc bo już nie mam pomysłów.

0
tabela.addMouseListener(new MouseAdapter(){

			@Override
			public void mouseClicked(MouseEvent arg0) {
				int row=tabela.getSelectedRow();//pobranie kliknietego wiersza
				//jakas akcja

			}

			});

pzdr.

0
Shimmi napisał(a)

tabela.addMouseListener(new MouseAdapter(){

		@Override
		public void mouseClicked(MouseEvent arg0) {
			int row=tabela.getSelectedRow();//pobranie kliknietego wiersza
			//jakas akcja

		}

		});
> 
> pzdr.


Niestety nie działa żadna reakcja. Tak jakby nie było listenera.
0
public class Okno extends JFrame {

	JTable tabela;
	String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years",
			"Vegetarian" };

	Object[][] data = {
			{ "Mary", "Campione", "Snowboarding", new Integer(5),
					new Boolean(false) },
			{ "Alison", "Huml", "Rowing", new Integer(3), new Boolean(true) },
			{ "Kathy", "Walrath", "Knitting", new Integer(2),
					new Boolean(false) },
			{ "Sharon", "Zakhour", "Speed reading", new Integer(20),
					new Boolean(true) },
			{ "Philip", "Milne", "Pool", new Integer(10), new Boolean(false) } };

	public Okno() {
		setSize(300, 400);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		tabela = new JTable(data, columnNames);
		setLayout(new BorderLayout());
		getContentPane().add(tabela, BorderLayout.CENTER);
		tabela.revalidate();
		repaint();

		tabela.addMouseListener(new MouseAdapter() {			
			public void mouseClicked(MouseEvent arg0) {
				int row = tabela.getSelectedRow();													
				System.out.println("row to :" + row);
				}
		});
	}

	public static void main(String[] args) {
		new Okno();
	}
}

mi ten kod działa więc nie wiem o co chodzi, moze masz gdzies indziej blad...

0

To już nie wiem może coś wylukasz oto mój kod.
Wrucę wszytko co mam od tej tabeli:

deklaracja
jTable1 = new javax.swing.JTable();

funkcja do tworzenia tabeli i wstawiania wartości:

public void tabela(){
try{

	 String[] names={
     		tutaj nazwy kolumn
     };
     
     DefaultTableModel dtm = new DefaultTableModel();
     dtm.setColumnCount(6);
     dtm.setRowCount(row);
     dtm.setColumnIdentifiers(names);    
     JTable jTable1 = new JTable(dtm);

     while(rset.next()){
    	tu uzupełnia dane z bazy danych do tabeli
    	 }
     }rset.close();       
          
        jTable1.setRowSelectionAllowed(true);
        jTable1.setRequestFocusEnabled(true);
    
       
        
        jScrollPane1.setViewportView(jTable1);

jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTable1.getColumnModel().getColumn(0).setMinWidth(50);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(50);
jTable1.getColumnModel().getColumn(0).setMaxWidth(50);
jTable1.getColumnModel().getColumn(1).setMinWidth(150);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(150);
jTable1.getColumnModel().getColumn(1).setMaxWidth(150);
jTable1.getColumnModel().getColumn(2).setMinWidth(150);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(150);
jTable1.getColumnModel().getColumn(2).setMaxWidth(150);
jTable1.getColumnModel().getColumn(4).setMinWidth(150);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(150);
jTable1.getColumnModel().getColumn(4).setMaxWidth(150);
jTable1.getColumnModel().getColumn(5).setMinWidth(100);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(5).setMaxWidth(100);
//

        }
    	catch(Exception eee){
    		System.out.println("SQLExceprion:"+eee.getMessage());
    	}
	}

Z grubsza tak wyglądają ustawienia tabeli. Może problemem jest to, że jak kliknę dwa razy w komórkę to zaczyna mi ją edytować. Jeśli wiesz może jak wyłączyć edycję komórek w tabeli też bym poprosił.

0
jTable1.setRowSelectionAllowed(true);
            jTable1.setRequestFocusEnabled(true);
            jScrollPane1.setViewportView(jTable1);
jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

to jest zbedne

tabelke wrzuc do jscrollpane w konstruktorze, a to ze tablka sie edytuje przy 2xkliknieciu nie jest problemem bo mam tez tak i dziala...nie wiem czemu sie nie chce tak robic u ciebie...

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