我想从数据库获取通知,然后单击以获取带有通知的JOption窗口....是否可以在动态创建JLabel时添加动作侦听器?如果是,那么如何? 这是我的代码..........
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();
}
}
答案 0 :(得分:0)
很遗憾,无法向ActionListener
添加JLabel
。
绝对可以将ActionListener
动态添加到其他组件(例如JButton
)。为此,您可以使用匿名类1或创建一个实现ActionListener
的单独类,并在您的代码中使用它。
答案 1 :(得分:0)
您可以将MouseListener添加到JLabel,然后为“click”或任何您想要的内容定义行为。
有关如何实现鼠标侦听器的信息,请参阅https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html。
的Mathias