mardi 10 mars 2015

Copy a row from one jtable to another by button click JAVA


private void carparts() {
Vector<Object> columnNames = new Vector<Object>();
Vector<Object> data = new Vector<Object>();

Connection c = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\jj302\\Desktop\\1H\\Master\\Working\\database.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");

// Read data from a table
String sql = "Select * from part";
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();

// Get column names
for (int i = 1; i <= columns; i++) {
columnNames.addElement(md.getColumnName(i));
}

// Get row data
while (rs.next()) {
Vector<Object> row = new Vector<Object>(columns);

for (int i = 1; i <= columns; i++) {
row.addElement(rs.getObject(i));
}

data.addElement(row);
}

rs.close();
stmt.close();
c.close();
} catch (Exception e) {
System.out.println(e);
}

// Create table with database data
DefaultTableModel model5 = new DefaultTableModel(data, columnNames) {
@Override
public Class getColumnClass(int column) {
for (int row = 0; row < getRowCount(); row++) {
Object o = getValueAt(row, column);

if (o != null) {
return o.getClass();
}
}

return Object.class;
}
};

partsPanel.setLayout(null);
JButton buttonnext = new JButton("Next");
buttonnext.setBounds(710, 460, 60, 30);
JButton buttonback = new JButton("Back");
buttonback.setBounds(640, 460, 64, 30);
partsPanel.add(buttonback);
partsPanel.add(buttonnext);

JTable table = new JTable(model5);
JScrollPane scroll = new JScrollPane(table);
scroll.setBounds(130, 10, 500, 183);
partsPanel.add(scroll);

JLabel partsneeded = new JLabel("Parts needed for repair:");
partsneeded.setBounds(310,120,200,200);










Vector<Object> columnNames1 = new Vector<Object>();
Vector<Object> data1 = new Vector<Object>();

Connection c1 = null;
Statement stmt1 = null;
try {
Class.forName("org.sqlite.JDBC");
c1 = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\jj302\\Desktop\\1H\\Master\\Working\\database.db");
c1.setAutoCommit(false);
System.out.println("Opened database successfully");

// Read data from a table
String sql1 = "Select * from partrepair";
stmt1 = c1.createStatement();
ResultSet rs1 = stmt1.executeQuery(sql1);
ResultSetMetaData md1 = rs1.getMetaData();
int columns1 = md1.getColumnCount();

// Get column names
for (int i = 1; i <= columns1; i++) {
columnNames1.addElement(md1.getColumnName(i));
}

// Get row data
while (rs1.next()) {
Vector<Object> row1 = new Vector<Object>(columns1);

for (int i = 1; i <= columns1; i++) {
row1.addElement(rs1.getObject(i));
}

data.addElement(row1);
}

rs1.close();
stmt1.close();
c1.close();
} catch (Exception e) {
System.out.println(e);
}

// Create table with database data
DefaultTableModel model6 = new DefaultTableModel(data1, columnNames1) {
@Override
public Class getColumnClass(int column) {
for (int row1 = 0; row1 < getRowCount(); row1++) {
Object o = getValueAt(row1, column);

if (o != null) {
return o.getClass();
}
}

return Object.class;
}
};

partsPanel.add(partsneeded);
JTable tablerepair = new JTable(model6);
JScrollPane scroll1 = new JScrollPane(tablerepair);
scroll1.setBounds(130, 240, 500, 183);
partsPanel.add(scroll1);
JButton buttonadd = new JButton("Add Parts");
buttonadd.setBounds(630, 250, 100, 30);
partsPanel.add(buttonadd);
//action listener for buttonadd


Im trying to add a row from one JTable which is connected to a database to another JTable , which is also connected to a database. If i click a row from table1 and click add parts, the row should appear in the second table. However i do not how to do it. I wanna use the getSelectedRow method, which i think might work, but dont know how to implemnt it. If anyone could give me a hint, i would really appreciate it.


1 commentaire:

  1. Hello
    i have the same problem if you get any solution ,i will be so gratefull

    RépondreSupprimer