2015-11-19 120 views
0

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

回答

0

不幸的是没有可能性的ActionListener添加到JLabel


这肯定是可以动态地添加ActionListener到另一组件(例如JButton)。为此,您可以使用匿名类,或者创建一个单独的类来实现ActionListener并在代码中使用它。

+0

但是,然后我的滚动不起作用,你可以纠正可能的代码吗? – pavel