/ / показати дані з jTable у jFrame - java, swing, jtable, jframe, jbutton

показати дані з jTable у jFrame - java, swing, jtable, jframe, jbutton

У мене jFrame2, який містить jTable з 4стовпців (jTable, що бере дані з таблиці в базі даних, яка містить 20 стовпців) Також у мене є jFrame1, який я використовував для заповнення бази даних. Що я хочу зробити, коли я вибираю рядок у jTable і натискаю jButton, він повинен відкрити jframe1, показуючи всі дані для цього рядка. я зрозумію, що я хочу в пунктах

* я хочу відкрити jframe1 від jframe2 через jbutton (це завдання виконано, і це код)

      public void actionPerformed(ActionEvent e) {
if(e.getSource()==jButton2){
jframe2 regFace =new jframe2();
regFace.setVisible(true);
}}

* як тільки jframe1 відкриється jbutton в jframe2, він повинен відображати в ньому поля всіх даних вибраного рядка в jframe2 >> цей пункт означає

........- запит sql, виконаний одного разу jfram1, відкритий Jbutton в jframe2

......... - показує дані в jtextfield, беручи з бази даних за запитом, який я згадував у рядку вище (це завдання виконано, і це код, але не виконаний)

try {
dbconnect = new myDbConnection();
ResultSet resultSet =null;
resultSet = dbconnect.excuteQuery("SELECT id, area,location, status1 FROM pledges where id="17"");

while (resultSet.next()){
id.setText(resultSet.getString(1));
area.setText(resultSet.getString(2));
location.setText(resultSet.getString(3));
status.setText(resultSet.getString(4));
//         i = Long.parseLong(rs1.getString(1));
}

* коротко кажу, я хочу зрозуміти jframe1, що, будь ласка, якщо ви відкрили jframe2, виконайте запит і заповніть текстові поля цим запитом. * ця картина зрозуміла б краще тут

Відповіді:

3 для відповіді № 1

Це здається, що частина, з якою у вас виникають проблеми, - це як отримати вибрані дані з таблиці в поля в jframe1.

Багато цього залежить від TableModel що використовується у вашому JTable. Якщо припустити, що ви тільки що використовували DefaultTableModel, Ви можете отримати дані вибраних рядків таким чином:

@Override
public void actionPerformed(ActionEvent e) {
int viewRow = myJTable.getSelectedRow();
int modelRow = myJTable.convertRowIndexToModel(viewRow);
DefaultTableModel model = (DefaultTableModel) myJTable.getModel();

// You will get a compiler warning on the following line, but there"s not much you can do about it beside suppress it
Vector<Object> rowVector = (Vector<Object>) model.getDataVector().get(modelRow);

jframe2 regFace =new jframe2();
regFace.setSelectedRow(rowVector);
regFace.setVisible(true);
}

І у вас буде такий метод у вашому класі jframe2:

public void setSelectedRow(Vector<Object> row ) {
id.setText(row.get(0).toString());
area.setText(row.get(1).toString());
location.setText(row.get(2).toString());
status.setText(row.get(3).toString());
// continue for all columns
}

0 для відповіді № 2

Перш ніж я поставити відповідь, я подякував би @wolfcastle такої приємної людини. Він майже відповів на запитання, і я просто модифікую його, щоб адаптувати його до запиту sql та бази даних. це код для jfrme2

public void actionPerformed(ActionEvent e) {
if(e.getSource()==jButton2){
int viewRow = jTable1.getSelectedRow();
int modelRow = jTable1.convertRowIndexToModel(viewRow);
Object oc=  jTable1.getModel().getValueAt(modelRow, 0);
String vv=oc.toString();
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
jframe1 regFace =new jframe1();
try {
regFace.setSelectedRow(vv);
} catch (SQLException ex) {
Logger.getLogger(showp1.class.getName()).log(Level.SEVERE, null, ex);
}
regFace.setVisible(true);
}
}

і код для jframe1

public void setSelectedRow(String row ) throws SQLException {
dbconnect = new myDbConnection();
ResultSet resultSet =null;
System.out.print(row);
resultSet = dbconnect.excuteQuery("SELECT id, area,location, status1 ,date1,insname,oname,bname,street,junction,INSPSITION,recname1 FROM pledges where id=""+row+""");
while (resultSet.next()){
id.setText(resultSet.getString(1));
area.setText(resultSet.getString(2));
location.setText(resultSet.getString(3));
status.setText(resultSet.getString(4));
date.setText(resultSet.getString(5));
insname.setText(resultSet.getString(6));
oname.setText(resultSet.getString(7));
bname.setText(resultSet.getString(8));
street.setText(resultSet.getString(9));
junction.setText(resultSet.getString(10));
insposition.setText(resultSet.getString(11));
recname.setText(resultSet.getString(12));
}
}