Java - JList 中的 JTextArea 不显示所需的文本
Java - JTextArea into JList does not show the wanted text
好的,这就是交易,我正在尝试使用包含字符串值的 JtextArea 填充 JList 的行,但是当我 运行 我的程序时,JList 的行中显示的所有内容都是 JTextArea 的properties(?) 而不是我传递的字符串。那么,你能看看我的代码并指出我遗漏了什么吗?
代码如下:
public void DoConnect() {
try{
String host="jdbc:derby://localhost:1527/Project";
String username="Adminn";
String pass="password";
Connection con = DriverManager.getConnection( host, username, pass );
System.out.println("connected");
Statement stmt = con.createStatement( );
String SQL = "SELECT * FROM TEAMS";
ResultSet rs=stmt.executeQuery(SQL);
while(rs.next()){
String s = rs.getString("NAME");
JTextArea ta = new JTextArea();
ta.setText(s);
listModel.addElement(ta);
}
jList1.setModel(listModel);
jButton1.addActionListener ((ActionEvent e) -> {
listModel.removeAllElements();
DoConnect();
});
}
catch ( SQLException err ){
System.out.println( err.getMessage( ) );
}
}
这是我得到的输出:
JList 的默认渲染器仅显示您添加到模型的对象的 toString()
实现。
不要将 JTextArea 添加到 ListModel。将 String
添加到 ListModel
此外,当您只需要一列数据时,为什么要使用 "select * from Teams"。更明确地表达您的 SQL 并提高查询效率。
编辑:
Because the string I am trying to display has multiple lines.
然后您需要创建自定义渲染器并使用 JTextArea 作为渲染器。在任何情况下,您只会将字符串文本添加到 ListModel。阅读 Writing a Custom Renderer 上的 Swing 教程部分。
或者第二个选项是将文本显示为 HTML。 JLabel 将在多行中呈现 HTML:
listModel.addElement("<html>1<br>2<br>3<br></html>");
我相信您为此目的需要 JTable 而不是 JTextArea,如果我错了请纠正我。
例如,check this image
如果您想使用 JTable 解决方案,有一个名为 rs2xml.jar
的库可以让您更轻松地使用所需数据填充 JTable。
用法:
Statement stmt = con.createStatement();
String SQL = "SELECT * FROM TEAMS";
ResultSet rs = stmt.executeQuery(SQL);
table.setModel(DbUtils.resultSetToTableModel(rs)); //this line requires the rs2xml.jar
感谢:http://learnerarena.com 图片。
抱歉,由于信誉不佳,我无法发表评论。
好的,这就是交易,我正在尝试使用包含字符串值的 JtextArea 填充 JList 的行,但是当我 运行 我的程序时,JList 的行中显示的所有内容都是 JTextArea 的properties(?) 而不是我传递的字符串。那么,你能看看我的代码并指出我遗漏了什么吗?
代码如下:
public void DoConnect() {
try{
String host="jdbc:derby://localhost:1527/Project";
String username="Adminn";
String pass="password";
Connection con = DriverManager.getConnection( host, username, pass );
System.out.println("connected");
Statement stmt = con.createStatement( );
String SQL = "SELECT * FROM TEAMS";
ResultSet rs=stmt.executeQuery(SQL);
while(rs.next()){
String s = rs.getString("NAME");
JTextArea ta = new JTextArea();
ta.setText(s);
listModel.addElement(ta);
}
jList1.setModel(listModel);
jButton1.addActionListener ((ActionEvent e) -> {
listModel.removeAllElements();
DoConnect();
});
}
catch ( SQLException err ){
System.out.println( err.getMessage( ) );
}
}
这是我得到的输出:
JList 的默认渲染器仅显示您添加到模型的对象的 toString()
实现。
不要将 JTextArea 添加到 ListModel。将 String
添加到 ListModel
此外,当您只需要一列数据时,为什么要使用 "select * from Teams"。更明确地表达您的 SQL 并提高查询效率。
编辑:
Because the string I am trying to display has multiple lines.
然后您需要创建自定义渲染器并使用 JTextArea 作为渲染器。在任何情况下,您只会将字符串文本添加到 ListModel。阅读 Writing a Custom Renderer 上的 Swing 教程部分。
或者第二个选项是将文本显示为 HTML。 JLabel 将在多行中呈现 HTML:
listModel.addElement("<html>1<br>2<br>3<br></html>");
我相信您为此目的需要 JTable 而不是 JTextArea,如果我错了请纠正我。
例如,check this image
如果您想使用 JTable 解决方案,有一个名为 rs2xml.jar
的库可以让您更轻松地使用所需数据填充 JTable。
用法:
Statement stmt = con.createStatement();
String SQL = "SELECT * FROM TEAMS";
ResultSet rs = stmt.executeQuery(SQL);
table.setModel(DbUtils.resultSetToTableModel(rs)); //this line requires the rs2xml.jar
感谢:http://learnerarena.com 图片。
抱歉,由于信誉不佳,我无法发表评论。