【问题标题】:TextArea with News Posts - SQL Inserting (Starting New Lines)带有新闻帖子的文本区域 - SQL 插入(开始新行)
【发布时间】:2016-05-17 22:47:03
【问题描述】:

我目前正在运行一个程序,该程序从 SQL 数据库中获取新闻帖子,然后将它们加载到用户可以查看它们的 textArea 中。但目前我的程序有很大的限制,因为我无法抓取多个帖子,它只能显示一个帖子。

JScrollPane scrollPane_2 = new JScrollPane();
        scrollPane_2.setViewportBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        scrollPane_2.setBounds(769, 125, 294, 430);
        frame.getContentPane().add(scrollPane_2);

        JTextArea textArea = new JTextArea();
        scrollPane_2.setViewportView(textArea);
        textArea.setFont(new Font("Lantinghei TC", Font.PLAIN, 13));
        textArea.setEditable(false);
        textArea.setBackground(Color.LIGHT_GRAY);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);

        frame.getContentPane().add(lblChangelogAndNews);
        try {
            Connection conn = DriverManager.getConnection( Host, Name, Pass );  
            PreparedStatement pst = conn.prepareStatement("SELECT * From `news_1`");
            ResultSet rs = pst.executeQuery();
            while(rs.next()) {
                String content =rs.getString("content");
                textArea.setText(content);
            }
        } 
        catch (Exception e) {
        }

我遇到的问题是如何绕过抓取多个新闻项目,然后以这样的布局显示它们

标题

内容

(每个帖子之间有一个空格)

标题

内容

我目前尝试的方法都会导致问题,所以我刚刚列出了一个简单的工作方法,它显示了我想要的基础知识。

如果您想进一步了解我正在尝试做的事情,请发表评论,以便我可以提供更多信息。

感谢 Quinn(请注意,我目前是编码新手,因此布局不好)

【问题讨论】:

    标签: java sql swing jdbc jtable


    【解决方案1】:

    这不完全是 mysql 问题,而是 java swing 问题。如果您查看您的 while 循环,您会发现它一遍又一遍地写入相同的文本区域。

            while(rs.next()) {
                String content =rs.getString("content");
                textArea.setText(content);
            }
    

    您需要的是一个带有数据库链接模型的 JTable。这是一个很好的以前的 Q/A 这里解释了这是如何完成的:

    Most simple code to populate JTable from ResultSet

    (通常我会投票关闭重复,但我觉得这里需要解释)

    【讨论】:

    • 感谢您提供链接,因为我没有在搜索 JTables,但它非常有用。
    • 在回看这篇文章时不小心点击了它。对不起
    【解决方案2】:
                try {
                String content = "";
                Connection conn = DriverManager.getConnection( Host, Name, Pass );  
                PreparedStatement pst = conn.prepareStatement("SELECT * From `news_1`");
                ResultSet rs = pst.executeQuery();
                while(rs.next()) {
                    content = content + rs.getString("title") + "\n";
                    content = content + rs.getString("content") + "\n";
                    content = content + "\n";
                }
                textArea.setText(content);
            } 
            catch (Exception e) {
            }
    

    我最终决定不使用表格,而是使用我的 TextArea 使用 \n 给我新的行,然后通过我的数据库运行获取标题 + 内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多