У мене 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));
}
}