gpt4 book ai didi

java - 如何在java中逐行将数据库中的记录显示到TextArea中

转载 作者:行者123 更新时间:2023-12-01 12:32:20 26 4
gpt4 key购买 nike

我想将数据库中的记录逐行显示到文本区域中。

我尝试过这个:

String sql = "SELECT COUNT(*) FROM tweet";
ResultSet rs=stmt.executeQuery(sql);
int row = 0;
while(rs.next()){
row = rs.getInt("COUNT(*)");
}

jTextField2.setText("" + row);
jProgressBar1.setMaximum(row);
jProgressBar1.setStringPainted(true);

for(int i=1;i<row;i++){
String sql1 = "SELECT tweet,date,location FROM tweet WHERE tweet_id='"+i+"'";
ResultSet rs2 = stmt.executeQuery(sql1);
String tweet = "";
String date = "";
String location = "";

while(rs2.next()){
tweet = rs2.getString("tweet");
date = rs2.getString("date");
location = rs2.getString("location");
}

jTextArea1.append(i + ") " + tweet + "\n" );

jProgressBar1.setValue(i);
number++;
}

但是一旦所有过程完成,它就会给我输出,帮助我。我想逐行显示输出执行而不是全部显示。以及如何使用进度条?

最佳答案

嗯,SwingWorker 的目标是在另一个线程中处理计算,因此可以避免 swing 应用程序中出现一些难看的卡住(查看事件调度线程)。

有几种方法需要了解:

  • doInBackground() ,SwingWorker 的主要部分,将进行计算
  • publish(V... chunks ) ,允许您在计算过程中发布部分结果
  • process(List<V> chunks) ,允许您在收到结果的某些部分时做任何您想做的事情。
  • get() ,计算结束后给出最终结果。

SwingWorker<V, K> , V是最终结果的类型,K block 的类型。

这是一个SwingWorker应该适合你,希望它有帮助:)

public class TweetWorker extends SwingWorker<Integer, String> {

private JTextField field;
private JTextArea area;
private JProgressBar bar;

private int progress = 0 ;

public TweetWorker(JTextField yourField, JTextArea yourArea, JProgressBar yourBar) {
field = yourField;
area = yourArea;
bar = yourBar;
}

@Override
public Integer doInBackground() {
String sql = "SELECT COUNT(*) FROM tweet";
ResultSet rs=stmt.executeQuery(sql);
int row = 0;
while(rs.next()){
row = rs.getInt("COUNT(*)");
}

field.setText("" + row);
bar.setMaximum(row);
bar.setStringPainted(true);

for(int i=1;i<row;i++){
String sql1 = "SELECT tweet,date,location FROM tweet WHERE tweet_id='"+i+"'";
ResultSet rs2 = stmt.executeQuery(sql1);
String tweet = "";
String date = "";
String location = "";

while(rs2.next()){
tweet = rs2.getString("tweet");
date = rs2.getString("date");
location = rs2.getString("location");
}

publish(i + ") " + tweet + "\n");
}
return row;
}

@Override
public void process(List<String> chunks){
for(String s : chunks) {
area.append(s);
}
progress+=chunks.size();
bar.setValue(progress);
}

}

抱歉我的英语不好;)

关于java - 如何在java中逐行将数据库中的记录显示到TextArea中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com