Java中的JLabel动作侦听器

时间:2015-11-19 16:16:35

标签: java actionlistener jlabel

我想从数据库获取通知,然后单击以获取带有通知的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();
    }
}

2 个答案:

答案 0 :(得分:0)

很遗憾,无法向ActionListener添加JLabel

绝对可以将ActionListener动态添加到其他组件(例如JButton)。为此,您可以使用匿名类1或创建一个实现ActionListener的单独类,并在您的代码中使用它。

答案 1 :(得分:0)

您可以将MouseListener添加到JLabel,然后为“click”或任何您想要的内容定义行为。

有关如何实现鼠标侦听器的信息,请参阅https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

的Mathias