我有一个页面(swinggui),在这个页面中,我根据一些条件显示一个数据。当页面加载时,页面从数据库获取数据并在gui中显示数据。现在,如果数据库中有任何更改,我希望更改立即反映在gui中,而不需要运行/重新加载/刷新。你知道如何实现这个功能吗。我正在使用jdbc连接。。。好心的建议。。。注意:我不想运行java代码或刷新页面,数据应该自动更新。提前谢谢,
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Timer;``
import java.util.TimerTask;
import javax.swing.*;
import DemoDBConn.MysqlConnection;
@SuppressWarnings("serial")
class GUI extends JFrame
{
Connection connection=null;
public GUI()
{
JFrame jf = new JFrame();
JLayeredPane LPane = new JLayeredPane();
jf.getContentPane() .add(LPane);
ImageIcon i = new ImageIcon(GUI.class.getResource("/images/background4.gif"));
JLabel background = new JLabel();
background.setIcon(i);
background.setBounds(0, 0, 1024, 768);
JLabel flight = new JLabel();
flight.setIcon(new ImageIcon(GUI.class.getResource("/images/acs_md_dis.png")));
flight.setBounds(270, 0, 800, 768);
JLabel seat1 = new JLabel();
seat1.setIcon(new ImageIcon(GUI.class.getResource("/images/acSymAmberInd.png")));
seat1.setBounds(320, 230, 10, 20);
JLabel seat2 = new JLabel();
seat2.setIcon(new ImageIcon(GUI.class.getResource("/images/acSymAmberInd.png")));
seat2.setBounds(370, 230, 10, 20);
JLabel seat3 = new JLabel();
seat3.setIcon(new ImageIcon(GUI.class.getResource("/images/acSymAmberInd.png")));
seat3.setBounds(320, 280, 10, 20);
JLabel seat4 = new JLabel();
seat4.setIcon(new ImageIcon(GUI.class.getResource("/images/acSymAmberInd.png")));
seat4.setBounds(370, 280, 10, 20);
LPane.add(background, new Integer(1));
LPane.add(flight, new Integer(2));
LPane.add(seat1, new Integer(3));
LPane.add(seat2, new Integer(3));
LPane.add(seat3, new Integer(3));
LPane.add(seat4, new Integer(3));
try {
String query ="Select * from passengersdetails";
connection = MysqlConnection.dbConnector();
PreparedStatement pst= connection.prepareStatement(query);
ResultSet rs= pst.executeQuery();
while(rs.next()){
if(rs.getString("seateNumber").equals("A1")){
if(rs.getString("status").equals("OK")){
seat1.setIcon(new ImageIcon(
GUI.class.getResource("/images/acSymGreenInd.png")));
}
else if(rs.getString("status").equals("NOT OK")){
}
else{
}
}
else if(rs.getString("seateNumber").equals("A2")){
if(rs.getString("status").equals("OK")){
seat2.setIcon(new ImageIcon(
GUI.class.getResource("/images/acSymGreenInd.png")));
}
else if(rs.getString("status").equals("NOT OK")){
}
else{
}
}
else if(rs.getString("seateNumber").equals("A3")){
if(rs.getString("status").equals("OK")){
seat3.setIcon(new ImageIcon(
GUI.class.getResource("/images/acSymGreenInd.png")));
}
else if(rs.getString("status").equals("NOT OK")){
}
else{
}
}
else if(rs.getString("seateNumber").equals("A4")){
if(rs.getString("status").equals("OK")){
seat4.setIcon(new ImageIcon(
GUI.class.getResource("/images/acSymGreenInd.png")));
}
else if(rs.getString("status").equals("NOT OK")){
}
else{
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setSize(1024,768);
jf.setResizable(false);
jf.setVisible(true);
}
public static void main(String args[])
{
GUI gui = new GUI();
}
}
1条答案
按热度按时间eimct9ow1#
别做梦了。
dbms引擎以一问一答的方式回答问题(查询)。问题回答了吗?工作完成了。这就是它的工作原理。它们的存在并不是为了跟踪哪个用户问了哪个问题,并且希望在给定的问题答案受到其他人对数据库所做的任何其他更新的影响时得到通知。
事实上,如果您的查询是一个包含各种关系代数运算符的完整的关系表达式,那么甚至不存在任何引擎知道如何计算这些内容[效率足够高,使整个机器不会立即停止所有所需的计算]。