我尝试使用java swing进行论坛。这是我的表格代码:
public void SetUpJTable() {
DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();
String[] data = new String[4];
db.setUp("IT Innovation Project");
String sql = "Select topic_title,topic_description,topic_by from forumTopics WHERE topic_id = "
+ topicId + "";
ResultSet resultSet = null;
resultSet = db.readRequest(sql);
try {
while (resultSet.next()) {
data[0] = resultSet.getString("topic_title");
data[1] = resultSet.getString("topic_description");
data[2] = resultSet.getString("topic_by");
tableModel.addRow(data);
}
resultSet.close();
} catch (Exception e) {
System.out.println(e);
}
}
我设置此表以检索用户从主页面选择某个主题的主题详细信息。我设置了另一个表来存储用户的回复。这是它:
public void SetUpJTableComment() {
DefaultTableModel tableModel1 = (DefaultTableModel) jTableComment
.getModel();
String[] data = new String[3];
db.setUp("IT Innovation Project");
String sql = "Select reply_content,reply_by from forumReplies WHERE reply_topic = "
+ topicId + "";
ResultSet resultSet = null;
resultSet = db.readRequest(sql);
try {
while (resultSet.next()) {
data[0] = resultSet.getString("reply_content");
data[1] = resultSet.getString("reply_by");
tableModel1.addRow(data);
}
resultSet.close();
} catch (Exception e) {
System.out.println(e);
}
}
这就是我设置表格的方式:
private JTable getJTableComment() {
String header[] = { "Comment", "Reply By" };
if (jTableComment == null) {
jTableComment = new JTable() {
public boolean isCellEditable(int nRow, int nCol) {
return false;
}
};
}
DefaultTableModel tableModel1 = (DefaultTableModel) jTableComment
.getModel();
tableModel1.setColumnIdentifiers(header);
jTableComment.getColumnModel().getColumn(0).setMinWidth(700);
jTableComment.getColumnModel().getColumn(0).setMaxWidth(800);
jTableComment.getColumnModel().getColumn(1).setMinWidth(97);
jTableComment.getColumnModel().getColumn(1).setMaxWidth(100);
jTableComment.getTableHeader().setFont(
new Font("Dialog", Font.PLAIN, 20));
jTableComment.getTableHeader().setForeground(Color.white);
jTableComment.getTableHeader().setBackground(new Color(102, 102, 102));
jTableComment.setRowHeight(50);
jTableComment.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTableComment.setFont(new Font("Dialog", Font.PLAIN, 18));
return jTableComment;
}
它与两个分离表完美配合。我想知道是否有办法将这两个表组合成一个表?我如何自定义表格使其看起来不太受欢迎,因为我当前的表格只是...固定表格,我的老师让我改进它,但我不知道这样做。我尝试在表中添加按钮,但我意识到我无法从try语句添加它,因为那是直接从数据库中检索数据。任何指南?提前谢谢。
答案 0 :(得分:1)
您可以使用SQL join构造,并使一个表包含更多列:
select topic_title,topic_description,topic_by,
reply_content,reply_by
from forumTopics join forumReplies
on (forumTopics.topic_id=forumReplies.topic_id) WHERE topic_id = 1234
然后按照您已经在的五列结果集构建模型。
但是,如果对论坛主题的回复不止一个,主题部分将在表格中重复。
要使表格看起来不像桌子,可以试试JTreeTable中的Swing Labs,它允许有类似树状的子部分,完全是必需的。它不是系统库的一部分,但是您需要下载它。有关如何只使用JTreeTable的一些源代码可以找到here。
关于JTreeTable的外观是Swing Labs,你可以在他们web-startable demo中看到。它还会自动显示代码示例。