【发布时间】:2017-01-26 22:26:45
【问题描述】:
我正在设计一个简单的数据库应用程序,它在 GUI 中具有 2 个 jComboBoxes。第一个 jComboBox 填充了 SQL 查询的结果。我希望第二个 jComboBox 填充第二个查询的结果,该查询将用户选择的值合并到第一个框中,但我不能让它工作。
我创建了 2 个类,一个用于绘制 GUI 并包含 main 方法,另一个用于查询我的 Oracle 数据库。
我的 GUI 类:
public class TestUI extends javax.swing.JFrame {
// Create new form TestUI
public TestUI() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jComboBox1 = new javax.swing.JComboBox<>();
jTextField1 = new javax.swing.JTextField();
jComboBox2 = new javax.swing.JComboBox<>();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
// Combo box 1 population
jComboBox1.removeAllItems();
createConnection c1 = new createConnection();
c1.getEmployee().forEach((employee) -> {
jComboBox1.addItem(employee);
});
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
// ComboBox 2 population
jComboBox2.removeAllItems();
}
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add handling code here:
}
public static void main(String args[]) {
DRAW GUI
}
}
还有我的数据库类:
import java.util.List;
import java.util.ArrayList;
import java.sql.*;
public class createConnection {
String empName;
public Connection createConnection() {
try {
Class.forName(driver);
java.sql.Connection conn = DriverManager.getConnection(DB_URL, DB_username, DB_password);
return conn;
} catch (ClassNotFoundException | SQLException e) {
return null;
}
}
// ComboBox 1
public List<String> getEmployee() {
List<String> list = new ArrayList();
Connection conn = createConnection();
try {
Statement stmt = conn.createStatement();
String query = "SELECT * FROM hr.employees ORDER BY last_name";
ResultSet results = stmt.executeQuery(query);
while (results.next()) {
list.add(results.getString("last_name"));
}
} catch (Exception e) {
System.out.println("Exception = " + e);
}
return list;
}
// Combo Box 2
public List<String> getEmpLocation() {
List<String> list = new ArrayList();
Connection conn = createConnection();
try {
Statement stmt = conn.createStatement();
String query = "SELECT country_id FROM hr.location WHERE hr.location.emp_name = " + empName;
ResultSet results = stmt.executeQuery(query);
while (results.next()) {
list.add(results.getString("last_name"));
}
} catch (Exception e) {
System.out.println("Exception = " + e);
}
return list;
}
}
我省略了数据库连接变量和 GUI 坐标等不相关的代码。
我想知道如何正确获取数据库类中的 getEmpLocation() 方法来填充第二个 ComboBox。这将涉及向两个类添加代码并传递变量值,但我无法弄清楚!任何帮助将不胜感激。
【问题讨论】:
-
Dynamic JComboBoxes 的可能重复项。
-
@MadProgrammer - 谢谢你。我正在阅读这些链接页面。我经常发现很难知道要问什么 - 我不知道我正在寻找的东西的名称,所以这个输入真的很有帮助。
标签: java sql oracle swing class