我有jFrame2,其中包含带有4列的jTable(jTable从数据库中的表中获取包含20列的数据) 我还有jFrame1,我用它来填充数据库。 当我在jTable中选择行并单击jButton时,我想要这样做,它必须打开jframe1,显示该行的所有数据。 我会用点清楚我想要的东西
*我希望通过jbutton从jframe2打开jframe1(此任务已完成,这是代码)
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jButton2){
jframe2 regFace =new jframe2();
regFace.setVisible(true);
}}
*一旦jframe1在jframe2中由jbutton打开,它必须在其中显示jframe2中所选行的所有数据>>这一点意味着
........- sql查询一旦Jfton在jframe2中打开jfram1
就执行了.........-显示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打开请执行查询并按该查询填充文本字段 *这是图片会更清楚 here
答案 0 :(得分:3)
听起来你遇到麻烦的部分是如何将表格中的选定数据输入到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
}
答案 1 :(得分:0)
在我回答之前我会感谢@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));
}
}