2015-11-19 4 views
0

Я хочу получить информацию из базы данных и после щелчка, чтобы получить окно JOption с уведомлением .... Можно ли добавить действие listenr для JLabel, когда оно создано динамически? если да, то КАК? Вот мой код ..........JLabel action Listener в 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

Смежные вопросы