Java - ¿Cómo cargar datos de un JFrame a un Jtable de otro JFrame?

 
Vista:
Imágen de perfil de Codigo

¿Cómo cargar datos de un JFrame a un Jtable de otro JFrame?

Publicado por Codigo (3 intervenciones) el 26/02/2017 16:35:13
Buen día, estoy con un problema y necesitaría un ejemplo que me permita entender como resolverlo.
Tengo un JFrame que contiene un JTable con datos de clientes y un botón "agregarCliente" el cual al ser presionado abre otro JFrame que contiene los campos del cliente y 2 botones: "Guardar" y "Cancelar". Mi idea es que una vez llenados los campos, al presionar el botón "Guardar" los datos que se cargaron correctamente en la base de datos se agreguen también a partir de este evento en el JTable del primer JFrame ya que no logro hacerlo. Hasta ahora solo eh utilizado un botón "Actualizar" que vuelve a cargar los datos desde la BD al modelo del JTable, lo cual funciona pero no es lo que quiero. Mi idea es que se carguen y vean inmediatamente después de presionar en el botón "Guardar".
Agradezco de ante mano a quien se tome un ratito para darme una ayudita
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
sin imagen de perfil

¿Cómo cargar datos de un JFrame a un Jtable de otro JFrame?

Publicado por alex90 (6 intervenciones) el 27/02/2017 09:14:46
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package my.org;
 
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
 
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
 
public class App extends JFrame {
	private JTable table;
	private DataTable dataTable = new DataTable();
	private JButton createClientBtn = new JButton("Create client");
	private JButton editClientBtn = new JButton("Edit client");
	private JFrame editWindow;
	private SomeData editData;
 
	private static class SomeData implements Cloneable {
		static String[] COLUMNS = { "name", "surname" };
		static int COLUMNS_COUNT = 2;
		private String name;
		private String surname;
 
		String getValueAt(int c) {
			return (c == 0) ? name : surname;
		}
 
		@Override
		protected Object clone() throws CloneNotSupportedException {
			return super.clone();
		}
	}
 
	private List<SomeData> dataList = new ArrayList<>();
 
	public App() throws HeadlessException {
		JPanel mainPanel = new JPanel();
		mainPanel.setPreferredSize(new Dimension(300, 300));
		mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
		table = new JTable(dataTable);
		table.setPreferredScrollableViewportSize(new Dimension(300, 200));
		mainPanel.add(table);
		mainPanel.add(createClientBtn);
		mainPanel.add(editClientBtn);
		add(mainPanel);
		createClientBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editData = new SomeData();
				editWindow = new EditWindow(editData, data -> {
					dataList.add(data);
					dataTable.fireTableDataChanged();
				});
				showWin(editWindow);
			}
		});
		editClientBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int selectedRow = table.getSelectedRow();
				if (selectedRow == -1)
					return;
				editData = dataList.get(selectedRow);
 
				editWindow = new EditWindow(editData, data -> {
					dataTable.fireTableDataChanged();
				});
				showWin(editWindow);
			}
		});
 
	}
 
	public static void main(String[] args) {
		JFrame win = new App();
		showWin(win);
 
	}
 
	private static void showWin(JFrame win) {
		win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		win.pack();
		win.setVisible(true);
	}
 
	private class DataTable extends AbstractTableModel {
		@Override
		public String getColumnName(int c) {
			return SomeData.COLUMNS[c];
		}
 
		@Override
		public int getRowCount() {
			return dataList.size();
		}
 
		@Override
		public int getColumnCount() {
			return SomeData.COLUMNS_COUNT;
		}
 
		@Override
		public Object getValueAt(int r, int c) {
			return dataList.get(r).getValueAt(c);
		}
	}
 
	private static class EditWindow extends JFrame {
		private JButton saveBtn = new JButton("Save");
		private JButton cancelBntn = new JButton("Cancel");
		private SomeData data;
		private JTextField nameTxt;
		private JTextField surnameTxt;
		private final SomeData backupData;
 
		public SomeData getData() {
			return data;
		}
 
		public EditWindow(final SomeData someData, final Consumer<SomeData> onSaveCallback) throws HeadlessException {
			super();
			JPanel mainPanel = new JPanel();
			mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
			mainPanel.setPreferredSize(new Dimension(100, 200));
			this.backupData = someData;
			this.data = someData;
			nameTxt = new JTextField(data.name);
			surnameTxt = new JTextField(data.surname);
			mainPanel.add(nameTxt);
			mainPanel.add(surnameTxt);
			mainPanel.add(saveBtn);
			mainPanel.add(cancelBntn);
			add(mainPanel);
			saveBtn.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					data.name = nameTxt.getText();
					data.surname = surnameTxt.getText();
					onSaveCallback.accept(data);
					setVisible(false);
					dispose();
				}
			});
			cancelBntn.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					try {
						data = (SomeData) backupData.clone();
					} catch (CloneNotSupportedException e1) {
						e1.printStackTrace();
					}
					setVisible(false);
					dispose();
				}
			});
 
		}
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Codigo

¿Cómo cargar datos de un JFrame a un Jtable de otro JFrame?

Publicado por Codigo (3 intervenciones) el 27/02/2017 13:34:42
Muchas gracias!! hace exactamente lo que necesitaba. Ahora veré como adaptarlo a mi diseño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar