我想从数据库中获取通知,点击后可以获取带有通知的JOption窗口....当动态创建JLabel时,是否可以添加动作监听器?如果是,那么如何? 这里是我的代码..........JLabel在Java中的动作监听器
import java.awt.Container;
import java.awt.GridLayout;
import java.sql.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class DBConnect {
public Connection con;
public Statement st;
public ResultSet rs;
public DBConnect() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
st = con.createStatement();
} catch (Exception ex) {
System.out.println("Error " + ex);
}
}
public void getData() {
try {
String query = "select * from persons";
rs = st.executeQuery(query);
System.out.println("Records from database\n");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("panel demo");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel panel = new JPanel();
Container c = frame.getContentPane();
panel.setSize(100, 100);
panel.setLayout(new GridLayout(1000, 1));
try {
while (rs.next()) {
try {
String name = rs.getString("Name");
panel.add(new JLabel("JLabel " + name));
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
JScrollPane jsp = new JScrollPane(panel);
c.add(jsp);
frame.setSize(100, 100);
frame.setVisible(true);
}
});
} catch (Exception ex) {
System.out.println("Error " + ex);
}
}
public static void main(String args[]) {
DBConnect a = new DBConnect();
a.getData();
}
}
但是,然后我的滚动不起作用,你可以纠正可能的代码吗? – pavel