Java如何在jlist中刷新sql结果
我的Java应用程序有点小问题。我想在左侧列表中显示餐厅的订单,在右侧列表中显示所选订单的详细信息。订单通过MySQL查询读取,然后打印到Jlist中。但是,我们希望使用refresh按钮再次执行查询,然后将其打印到Jlist。但是,我无法使刷新按钮工作。它确实会刷新内容,但会打开一个新的Jfram窗口 从GUI类:Java如何在jlist中刷新sql结果,java,swing,jdbc,jlist,Java,Swing,Jdbc,Jlist,我的Java应用程序有点小问题。我想在左侧列表中显示餐厅的订单,在右侧列表中显示所选订单的详细信息。订单通过MySQL查询读取,然后打印到Jlist中。但是,我们希望使用refresh按钮再次执行查询,然后将其打印到Jlist。但是,我无法使刷新按钮工作。它确实会刷新内容,但会打开一个新的Jfram窗口 从GUI类: public class Barscherm extends javax.swing.JFrame { private BedieningsManager manager; /**
public class Barscherm extends javax.swing.JFrame {
private BedieningsManager manager;
/**
* Creates new form Barscherm
*/
public Barscherm() {
manager = new BedieningsManager();
initComponents();
}
private void opvraagKnopActionPerformed(java.awt.event.ActionEvent evt) { // This is the refresh button
jPanel1.removeAll();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Barscherm().setVisible(true);
}
});
}
从manager类中:
public class BedieningsManager {
private ArrayList<Barbestelling> bestellingen;
private int tafelNummer,bestelNummer, aantal;
Database db1 = new Database();
public BedieningsManager(){
this.bestellingen = new ArrayList<Barbestelling>();
maakBestellingen();
public void maakBestellingen(){
aantal = db1.getAantalRijenBarBestelling();
Barbestelling[] bss = new Barbestelling[aantal];
for (int i = 0; i < aantal; i++){
tafelNummer = db1.getTafelnummer(i);
bestelNummer = db1.getBestelNummer(i);
bss[i] = new Barbestelling(bestelNummer,tafelNummer,"Geplaatst");
bestellingen.add(bss[i]);
}
}
public ArrayList<String> toonBarbestellingen()
{
ArrayList<String> tafelNummers = new ArrayList<String>();
for(Barbestelling i : bestellingen)
{
tafelNummers.add(i.getTafelNummer());
}
return tafelNummers;
}
public ArrayList<Barbestelling> getBestellingen()
{
return bestellingen;
}
public String getDetails(String barbestelling){
String details = "";
boolean found = false;
int count = 0;
while(!found && count < bestellingen.size())
{
if(bestellingen.get(count).getTafelNummer().equals(barbestelling))
{
found = true;
details = bestellingen.get(count).getDetails();
}
else
{
count ++;
}
}
if(!found)
{
System.out.println("Bestelling met Tafelnummer: " + barbestelling + " bestaat niet!");
}
return details;
}
}
GUI的屏幕截图:
使用l设置您自己的实例。它有添加、更改和删除内容的方法,而且JList应该监视它,观察您的更改 看看你的actionPerformed方法
private void opvraagKnopActionPerformed(java.awt.event.ActionEvent evt) { // This is the refresh button
jPanel1.removeAll();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Barscherm().setVisible(true);
}
});
}
首先,从jPanel1
中删除所有活动组件,然后创建一个新的Barsdherm
窗口并使其可见
应该做的是从数据库中加载所需的所有值并刷新列表模型
您的示例中没有足够的代码可以100%确定精确的解决方案,但一种方法是将数据库中需要的所有值加载到新的DefaultListModel
中,并将此模型应用到JList
看看示例刷新按钮或数据库查询的代码是什么?刷新按钮称为“opvraagKnop”(我们必须用荷兰语名称编程),查询简单选择所有仍需交付的订单的产品。我添加了查询,但不介意混乱。我们不得不这样做,因为我们得到的数据库有点搞砸了…为了更快地获得更好的帮助,发布一个。嗨,谢谢你的回答,但我对Java还是相当陌生的。你介意解释一下吗?你想要更多的代码来完成吗?因为我仅有的额外代码是来自GUI的代码。剩下的就这些了,事情是这样的。显然,您已经从数据库中加载了一次数据。您需要做的只是在actionPerformed方法中复制流程
private void opvraagKnopActionPerformed(java.awt.event.ActionEvent evt) { // This is the refresh button
jPanel1.removeAll();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Barscherm().setVisible(true);
}
});
}