![](/img/trans.png)
[英]How to update adjacent field according to jComboBox selection in jTable?
[英]How to update info of JTable after selection from Jcombobox
我正在開始Jave開發人員。 我正在開發一個程序,該程序說明數據庫中員工的數據。 員工關注組合框所示的部門。 這是我的代碼:
package gm;
import java.sql.Connection;
public class Department extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private Connection connection = null;
private PreparedStatement statement = null;
private JTable table;
private Vector<Object> temp;
public Department() {
super("Табель Сотрудников");
String[] department = { "Юристы", "Логистика", "Отел кадров", "MIS",
"Внешняя Торговля", "Внутреняя Торговля", "Планирование",
"Казночейство", " Бухгалтерия", "Аудит", "ГБО", "Автосервис",
"Мониторинг, развитие бизнеса", "Канцелярия", "Фин. отдел",
"Закупки", "Разв. новых пректов", " Маркетинг", "Администрация" };
JPanel p = new JPanel();
p.setBackground(new Color(0, 255, 255));
temp = new Vector<Object>();
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager
.getConnection("jdbc:mysql://localhost/tabel?user=root&password=4499669");
statement = connection
.prepareStatement("select id,tab_num,name_surname,position,worked_hours from department d, employee e,"
+ " hours h where d.id_dept=e.id_dept and h.emp_id=e.id");
ResultSet r = statement.executeQuery();
while (r.next()) {
Vector<Object> tmp = new Vector<Object>(6);
tmp.add(r.getObject("id"));
tmp.add(r.getObject("tab_num"));
tmp.add(r.getObject("name_surname"));
tmp.add(r.getObject("position"));
tmp.add(r.getObject("worked_hours"));
temp.add(tmp);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//System.out.println(temp);
Avans1 av = new Avans1();
Zarplata z = new Zarplata();
Vector<String> columns = new Vector<String>();
columns.add("ID");
columns.add("Tab Number");
columns.add("Name Surname");
columns.add("Position");
columns.add("Worked Hours");
DefaultTableModel model = new DefaultTableModel(temp, columns);
getContentPane().add(p);
JLabel d_n = new JLabel("Подразделение");
p.add(d_n);
JComboBox co = new JComboBox(department);
p.add(co);
co.setBackground(new Color(102, 205, 170));
JButton avans = new JButton("Аванс");
p.add(avans);
avans.addActionListener(av);
JButton zarp = new JButton("Зарплата");
p.add(zarp);
zarp.addActionListener(z);
JScrollPane scrollPane_1 = new JScrollPane();
p.add(scrollPane_1);
JPanel panel = new JPanel();
panel.setBackground(new Color(124, 252, 0));
scrollPane_1.setViewportView(panel);
table = new JTable();
table.setBorder(new LineBorder(null));
table.setModel(model);
table.getColumnModel().getColumn(2).setPreferredWidth(300);
table.getColumnModel().getColumn(4).setPreferredWidth(200);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
/////////////////////////////////////////////////////////////
this part should read appropriate info to selected item of combobox from database
co.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if(event.getStateChange()==ItemEvent.SELECTED)
{
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager
.getConnection("jdbc:mysql://localhost/tabel?user=root&password=4499669");
statement = connection
.prepareStatement("select id,tab_num,name_surname,position,worked_hours from department d, employee e,"
+ " hours h where d.id_dept=e.id_dept and h.emp_id=e.id");
ResultSet r = statement.executeQuery();
while (r.next()) {
Vector<Object> tmp = new Vector<Object>(6);
tmp.add(r.getObject("id"));
tmp.add(r.getObject("tab_num"));
tmp.add(r.getObject("name_surname"));
tmp.add(r.getObject("position"));
tmp.add(r.getObject("worked_hours"));
temp.add(tmp);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println(event.getItem());
}
}
});
/////////////////////////////////////////////////////////////
JScrollPane scrollPane = new JScrollPane(table,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Dates dat = new Dates();
dat.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dat.setSize(850, 470);
dat.setVisible(true);
panel.add(scrollPane);
}
private class Avans1 implements ActionListener{
public void actionPerformed(ActionEvent evend){
Class1 c = new Class1();
c.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
c.setSize(850,470);
c.setVisible(true);
}
}
private class Zarplata implements ActionListener{
public void actionPerformed(ActionEvent evend){
Class2 c = new Class2();
c.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
c.setSize(850,470);
c.setVisible(true);
}
}
private void reloadData() throws ClassNotFoundException,SQLException{
}
}
從Jcombobox選擇后如何更新JTable的信息
最簡單的方法是創建一個Mew TableModel,然后使用以下方法更改表的模型:
table.setModel( newlyCreatedTableModel );
因此,這意味着您將需要刪除“臨時”向量中的所有數據,以便可以將新數據添加到向量中。 然后,執行SQL查詢,遍歷ResultSet以獲取數據,然后使用Vector中的數據創建一個新的TableModel。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.