Java - Ayuda JTable

 
Vista:
sin imagen de perfil

Ayuda JTable

Publicado por Juanillo (18 intervenciones) el 22/02/2018 02:57:23
Un saludo gente:
Estoy haciendo pruebas con un JTable ( editable ) para luego implementarlas en mi proyecto,la idea es construir un jtable bacìo,
con las cabeceras y una sola linea en blanco y el foco en la primera celda y esta ya estaria en modo ediciòn , ingresariamos datos en esta celda y al pulsar return(validar datos)y pasaria a la celda siguiente,cuando llegara a la ultima celda al pulsar return (validar datos) y añadir una siguiente linea con el foco en la primera celda de esta neva linea y siendo ya editable.
Como podria hacer esto? lo unico que he conseguido y no se si voy bien encaminado,es añadir una fila nueva cuando la ultima celda registra un cambio,que es lo que no quiero si no cuando se pulse return

Si alguien supiera de algun enlaze donde explicara como llevar este tema del jtable y sus eventos,y lo refernte a e este,etc.., gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package formularios;
 
import java.awt.BorderLayout;
 
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
 
public class FramePruebaTabla1 extends JFrame {
 
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTable tabla;
	private DefaultTableModel dtm;
 
	public FramePruebaTabla1() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout());
		setContentPane(contentPane);
		tabla=new JTable();
		Object[][] fila = {};
 
	    String[] columNames ={"Nombre", "Apellido", "Pasatiempo", "Años de Practica", "Soltero(a)"};
 
		dtm=new DefaultTableModel(fila,columNames);
		tabla.setModel(dtm);
		tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		dtm.addRow(new Object[]{});
 
		tabla.getModel().addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
            	if ((tabla.getSelectedRow()==dtm.getRowCount()-1) && (tabla.getSelectedColumn()==dtm.getColumnCount()-1)){
        			dtm.addRow(new Object[]{});
        			tabla.changeSelection(dtm.getRowCount()-1, dtm.getColumnCount()-1, false, false);
        		}
            }
        });
 
 
		JScrollPane scroll = new JScrollPane(tabla);
		scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		this.getContentPane().add(scroll, BorderLayout.CENTER);
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder