【发布时间】:2012-04-22 14:47:47
【问题描述】:
好的,这是我在 JAVA 中的第一个项目(银行应用程序),我只想显示从数据库中获取的结果并将其设置到 JTextArea 中。但是,我希望银行职员能够单击 JTextArea 中的一行并执行某些操作(一旦我在 JTextArea 中获得结果,我将处理该问题);这就是我使用 JList 的原因。我已经达到了能够在不使用 JList 的情况下在 JTextArea 中显示结果的地步。我的问题是:
- 如果可能,如何将 JList 放入 JTextArea?
这是我的代码的一部分:
// function that will search for a record in the database
private void searchRecord(){
try {
Connection connect = null;
Class.forName("com.mysql.jdbc.Driver");
String url = "url";
String user = "user";
String password ="password";
connect = DriverManager.getConnection(url,user,password);
Statement SQLStatement = connect.createStatement();
String select = "SELECT * FROM customerinfo WHERE LastName LIKE '"+ txtSearch.getText().trim() +"%'";
ResultSet rows = SQLStatement.executeQuery(select);
while(rows.next()){
textArea.setLineWrap(true);
String first = rows.getString("FirstName");
String last = rows.getString("LastName");
String middleInitial = rows.getString("MiddleInitial");
String[] row = {first, last, middleInitial};
list = new JList(row);
list.setVisibleRowCount(5);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//textArea.append(row[1].toString() + ", " + row[0].toString() + " " + row[2].toString() + ".\n");
textArea.append(list values goes here + "\n"); // here is where I'm stuck!!!
//System.out.println(rows.getString("LastName"));
}
先谢谢了!!!
【问题讨论】:
-
您可以遍历列表的项目并将它们附加到 JTextArea。当你尝试这个时会发生什么?您的代码在哪里失败,它是如何失败的?
-
如需尽快获得更好的帮助,请发帖 SSCCE。此外,您实际上可能会尝试一些事情,而不是(有效地)来到这里并要求其他人为您做。顺便说一句 - 似乎该列表只会出现在
ResultSet行中。这是故意的吗? -
另外,为什么您显然要在每次循环迭代时创建一个新的 JList?在 while 循环之前,甚至在类的构造函数中创建一次 JList 不是更有意义吗?
-
好吧,我已经尝试过 list.getSelectedValue() 或 list.getSelectedValue().toString() 并且我得到空值。另外,我尝试了 list.toString,我得到了一堆不是来自数据库的字符串值。另外,我认为由于 list 是一个数组(对吗?),我尝试了 list[0].toString 之类的方法,但效果并不好。
-
@user118:这仍然令人困惑,因为 JList 正是为此而构建的:选择一行会触发一个事件,而 JTextArea 需要一些代码练习才能获得这种效果。除了 JList 之外,我仍然看不到您使用 JTextArea 的实用程序。
标签: java swing jlist jtextarea