Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!news.glorb.com!news-out.readnews.com!transit3.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!86597e80!not-for-mail From: "thufir" Subject: Observer for Swing JPanel Message-ID: X-Comment-To: comp.lang.java.gui,comp.l Newsgroups: comp.lang.java.gui Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.15a-Win32 NewsLink 1.92] Lines: 141 Date: Wed, 27 Apr 2011 15:48:07 GMT NNTP-Posting-Host: 96.60.20.240 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1303919287 96.60.20.240 (Wed, 27 Apr 2011 10:48:07 CDT) NNTP-Posting-Date: Wed, 27 Apr 2011 10:48:07 CDT Organization: TDS.net Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.gui:3996 To: comp.lang.java.gui,comp.l Follow up to comp.lang.java.gui Given that SourceTableBean extends JPanel, how can SourceTableBean send messages to Main? Or, to turn that question around, how can Main listen for events which SourceTableBean sends? How does the JFrame observe the JPanel? No, this, intentionally, isn't a single class. By definition, working on multiple files: thufir@arrakis:~/code$ cat beans/src/Main.java import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class Main extends javax.swing.JFrame /*implements PropertyChangeListener*/ { public Main() { initComponents(); } // //GEN- BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); text = new javax.swing.JTextArea(); table = new SourceTableBean(); setDefaultCloseOperation (javax.swing.WindowConstants.EXIT_ON_CLOSE); text.setColumns(20); text.setRows(5); jScrollPane1.setViewportView(text); getContentPane().add(jScrollPane1, java.awt.BorderLayout.NORTH); /* table.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { tablePropertyChange(evt); } });*/ //table.addPropertyChangeListener(this); getContentPane().add(table, java.awt.BorderLayout.CENTER); pack(); }// //GEN-END:initComponents /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Main().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private SourceTableBean table; private javax.swing.JTextArea text; // End of variables declaration//GEN-END:variables } thufir@arrakis:~/code$ thufir@arrakis:~/code$ cat beans/src/SourceTableBean.java import java.beans.PropertyChangeSupport; public class SourceTableBean extends javax.swing.JPanel { //pcs = new java.beans.PropertyChangeSupport(this); //PropertyChangeSupport pcs = new PropertyChangeSupport(this); public SourceTableBean() { initComponents(); } // //GEN- BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); table = new javax.swing.JTable(); setLayout(new java.awt.BorderLayout()); table.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {"a0", "a1", "a2", "a3"}, {"b0", "b1", "b2", "b3"} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); table.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tableMouseClicked(evt); } }); jScrollPane1.setViewportView(table); add(jScrollPane1, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents private void tableMouseClicked(java.awt.event.MouseEvent evt) {//GEN- FIRST:event_tableMouseClicked System.out.println("\nSourceTableBean.tableMouseClicked()\t"); int row = table.getSelectedRow(); int col = table.getSelectedColumn(); String val = table.getValueAt(row, col).toString(); System.out.println("how to send " + val + " to main?"); }//GEN-LAST:event_tableMouseClicked // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable table; // End of variables declaration//GEN-END:variables } thufir@arrakis:~/code$ thanks, Thufir --- * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet! --- Synchronet 3.15a-Win32 NewsLink 1.92 Time Warp of the Future BBS - telnet://time.synchro.net:24