Re: A nested class and the fields of her enclosing class
Mark Space wrote:
GIampiero Mughini wrote:
And I see every time on my console first "is not Empty" then "is Empty"
after clicking on the button of my GUI :-/
You example looks like it should work. I'll give it a try. However,
Here's my example I wrote from your code. Mine works. Does it give you
any clues?
package fubar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import java.util.Hashtable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
public class EdtTest extends JFrame {
JButton viewButtion = new JButton("click me");
EdtTest() {
add( viewButtion );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
pack();
setSize(200, 200);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
Hashtable h = new Hashtable();
h.put("red", "fish");
h.put("blue", "fish");
new Upload().startUpload(h);
}
public JButton getViewButtion() {
return viewButtion;
}
}
class Upload {
private Hashtable<String, Long> filesTable;
private JButton button;
protected void startUpload(Hashtable<String, Long> myFilesTable ) {
this.filesTable = myFilesTable;
if (!filesTable.isEmpty()) {
System.out.println("is not Empty");
}
startNewWindow(); //opens the GUI
button.addActionListener(new MyActionListener());
}
void startNewWindow(){
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createAndShowGui();
}
});
} catch (InterruptedException ex) {
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE,
null, ex);
ex.printStackTrace();
} catch (InvocationTargetException ex) {
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE,
null, ex);
ex.printStackTrace();
}
}
private void createAndShowGui() {
EdtTest edtTest = new EdtTest();
button = edtTest.getViewButtion();
edtTest.setVisible(true);
}
// start nested class
public class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
if (filesTable.isEmpty()) {
System.out.println("is Empty");
} else {
System.out.println("files = " + filesTable );
}
}
}; //end nested class
}