/ / pokaż dane z jTable w jFrame - java, swing, jtable, jframe, jbutton

pokaż dane z jTable w jFrame - java, swing, jtable, jframe, jbutton

Mam jFrame2, który zawiera jTable z 4kolumny (jTable pobierający dane z tabeli w bazie danych, która zawiera 20 kolumn) Mam także jFrame1, którego użyłem do wypełnienia bazy danych. Co chcę to zrobić, gdy zaznaczę wiersz w jTable i kliknę przycisk jButton, musi on otworzyć jframe1, pokazując wszystkie dane dla tego wiersza. wyjaśnię to, co chcę w punktach

* Chcę otworzyć Jframe1 z Jframe2 poprzez Jbutton (to zadanie jest wykonane i to jest kod)

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

* po otwarciu jframe1 przez jbutton w jframe2 musi pokazać w polach wszystkie dane z wybranego wiersza w jframe2 >> ten punkt oznacza

........ - kwerenda SQL wykonywana po otwarciu jfram1 przez Jbutton w jframe2

......... - wyświetlanie danych w polu jtextfield z bazy danych według zapytania, o którym wspomniałem w wierszu powyżej (to zadanie jest wykonane i to jest kod, ale nie ukończony)

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));
}

* w skrócie chcę zrozumieć jframe1, że jeśli otworzyłeś jframe2, wykonaj zapytanie i wypełnij pola tekstowe tym zapytaniem * to jest obraz lepiej wyczyścić tutaj

Odpowiedzi:

3 dla odpowiedzi № 1

Brzmi to tak, jakbyś miał problem z tym, jak pobrać wybrane dane z tabeli do pól w jframe1.

Wiele z tego zależy od TableModel który jest używany w twoim JTable. Zakładając, że właśnie użyłeś DefaultTableModel, możesz pobrać wybrane dane wiersza w ten sposób:

@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);
}

I miałbyś następującą metodę w swojej klasie 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 dla odpowiedzi nr 2

zanim odpowiem, chciałbym podziękować @wolfcastle tak miłej osobie. Prawie odpowiada na pytanie i po prostu modyfikuję go, aby dostosować go do zapytania SQL i bazy danych. to jest kod dla 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);
}
}

i kod 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));
}
}