Hi, i find a bug in the java.awt.List, when i remove an item from the list, the List doesn't refresh apropiatelly, and the item persist appearing, in windows this doesn't have that behavior. p.d. i send you the main application that show a frame with the list and tries to remove an item selected from the list. Nestor A. Diaz Lizarazo Universidad de Los Andes mailto:[EMAIL PROTECTED] Ingenieria de Sistemas y Computacion http://wwwest.uniandes.edu.co/~n-diaz Santafe de Bogota D.C., Colombia PGP Public Key: finger -l [EMAIL PROTECTED]
/** * JFW.java * * * Created: Wed Dec 2 17:08:13 1998 * * @author Nestor A. Diaz L. * @version $Id: JFW.java,v 1.1 1998/12/03 01:45:25 nestor Exp $ */ package jfw; import java.awt.*; import java.awt.event.*; public class JFW extends java.awt.Frame { AboutJFW aboutJFW_; boolean inAnApplet_ = true; FWServer fwServer; TextField port_textfield; List ip_deny_list; TextField ip_deny_textfield; List ip_permit_list; TextField ip_permit_textfield; public JFW() { final Frame THIS = this; MenuBar mb; Menu file, help; MenuItem file_quit; MenuItem help_about; mb = new MenuBar(); setMenuBar(mb); file = new Menu("File", true); mb.add (file); file_quit = new MenuItem ("Quit"); file.add (file_quit); help = new Menu ("Help", true); mb.add (help); mb.setHelpMenu (help); help_about = new MenuItem ("About JFW..."); help.add (help_about); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); c.fill = GridBagConstraints.BOTH; c.insets = new Insets(5,5,5,5); //beautyfing c.weightx = 1.0; c.gridwidth = GridBagConstraints.REMAINDER; //end of row Label jfirewall_label = new Label ("JFirewall", Label.CENTER); gridbag.setConstraints(jfirewall_label, c); add(jfirewall_label); c.weighty = 1.0; Panel deny_panel = new Panel(); gridbag.setConstraints(deny_panel, c); add (deny_panel); Panel permit_panel = new Panel(); gridbag.setConstraints(permit_panel, c); add (permit_panel); c.weighty = 0.0; Panel startstop_panel = new Panel(); gridbag.setConstraints(startstop_panel, c); add (startstop_panel); // Deny Panel (deny_panel) GridBagLayout deny_gridbag = new GridBagLayout(); GridBagConstraints deny_c = new GridBagConstraints(); deny_panel.setLayout(deny_gridbag); deny_c.fill = GridBagConstraints.BOTH; deny_c.insets = new Insets(5,5,5,5); // beautyfing deny_c.weightx = 1.0; Label deny_label = new Label ("Deny", Label.LEFT); deny_c.gridwidth = 3; deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row deny_gridbag.setConstraints(deny_label, deny_c); deny_panel.add (deny_label); deny_c.gridwidth = 1; Panel p1_deny_panel = new Panel (); deny_gridbag.setConstraints(p1_deny_panel, deny_c); deny_panel.add (p1_deny_panel); Panel p2_deny_panel = new Panel (); deny_gridbag.setConstraints(p2_deny_panel, deny_c); deny_panel.add (p2_deny_panel); Panel p3_deny_panel = new Panel (); deny_c.weighty = 1.0; deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row deny_gridbag.setConstraints(p3_deny_panel, deny_c); deny_panel.add (p3_deny_panel); deny_c.weighty = 0.0; // Deny Panel p1 GridBagLayout p1_deny_gridbag = new GridBagLayout(); GridBagConstraints p1_deny_c = new GridBagConstraints(); p1_deny_panel.setLayout(p1_deny_gridbag); p1_deny_c.fill = GridBagConstraints.BOTH; p1_deny_c.insets = new Insets(5,5,5,5); // beautyfing p1_deny_c.weightx = 1.0; p1_deny_panel.setLayout(p1_deny_gridbag); ip_deny_textfield = new TextField (12); p1_deny_c.gridwidth = GridBagConstraints.REMAINDER; p1_deny_gridbag.setConstraints (ip_deny_textfield, p1_deny_c); p1_deny_panel.add (ip_deny_textfield); // Deny panel p2 GridBagLayout p2_deny_gridbag = new GridBagLayout(); GridBagConstraints p2_deny_c = new GridBagConstraints(); p2_deny_panel.setLayout(p2_deny_gridbag); p2_deny_c.fill = GridBagConstraints.BOTH; p2_deny_c.insets = new Insets(5,5,5,5); // beautyfing p2_deny_c.weightx = 1.0; p2_deny_panel.setLayout(p2_deny_gridbag); Button add_deny_button = new Button ("Add"); p2_deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row p2_deny_gridbag.setConstraints (add_deny_button, p2_deny_c); p2_deny_panel.add (add_deny_button); Button del_deny_button = new Button ("Del"); p2_deny_gridbag.setConstraints (del_deny_button, p2_deny_c); p2_deny_panel.add (del_deny_button); // Deny panel p3 GridBagLayout p3_deny_gridbag = new GridBagLayout(); GridBagConstraints p3_deny_c = new GridBagConstraints(); p3_deny_panel.setLayout(p3_deny_gridbag); p3_deny_c.fill = GridBagConstraints.BOTH; p3_deny_c.insets = new Insets(5,5,5,5); // beautyfing p3_deny_c.weightx = 1.0; p3_deny_c.weighty = 1.0; p3_deny_panel.setLayout(p3_deny_gridbag); ip_deny_list = new List (4, false); p3_deny_c.weightx = 1.0; p3_deny_gridbag.setConstraints (ip_deny_list, p3_deny_c); p3_deny_panel.add (ip_deny_list); // Permit Panel (deny_panel) GridBagLayout permit_gridbag = new GridBagLayout(); GridBagConstraints permit_c = new GridBagConstraints(); permit_panel.setLayout(permit_gridbag); permit_c.fill = GridBagConstraints.BOTH; permit_c.insets = new Insets(5,5,5,5); // beautyfing permit_c.weightx = 1.0; Label permit_label = new Label ("Permit", Label.LEFT); permit_c.gridwidth = 3; permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row permit_gridbag.setConstraints(permit_label, permit_c); permit_panel.add (permit_label); permit_c.gridwidth = 1; Panel p1_permit_panel = new Panel (); permit_gridbag.setConstraints(p1_permit_panel, permit_c); permit_panel.add (p1_permit_panel); Panel p2_permit_panel = new Panel (); permit_gridbag.setConstraints(p2_permit_panel, permit_c); permit_panel.add (p2_permit_panel); Panel p3_permit_panel = new Panel (); permit_c.weighty = 1.0; permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row permit_gridbag.setConstraints(p3_permit_panel, permit_c); permit_panel.add (p3_permit_panel); permit_c.weighty = 0.0; // Permit Panel p1 GridBagLayout p1_permit_gridbag = new GridBagLayout(); GridBagConstraints p1_permit_c = new GridBagConstraints(); p1_permit_panel.setLayout(p1_permit_gridbag); p1_permit_c.fill = GridBagConstraints.BOTH; p1_permit_c.insets = new Insets(5,5,5,5); // beautyfing p1_permit_c.weightx = 1.0; p1_permit_panel.setLayout(p1_permit_gridbag); ip_permit_textfield = new TextField (12); p1_permit_c.gridwidth = GridBagConstraints.REMAINDER; p1_permit_gridbag.setConstraints (ip_permit_textfield, p1_permit_c); p1_permit_panel.add (ip_permit_textfield); // Permit panel p2 GridBagLayout p2_permit_gridbag = new GridBagLayout(); GridBagConstraints p2_permit_c = new GridBagConstraints(); p2_permit_panel.setLayout(p2_permit_gridbag); p2_permit_c.fill = GridBagConstraints.BOTH; p2_permit_c.insets = new Insets(5,5,5,5); // beautyfing p2_permit_c.weightx = 1.0; p2_permit_panel.setLayout(p2_permit_gridbag); Button add_permit_button = new Button ("Add"); p2_permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row p2_permit_gridbag.setConstraints (add_permit_button, p2_permit_c); p2_permit_panel.add (add_permit_button); Button del_permit_button = new Button ("Del"); p2_permit_gridbag.setConstraints (del_permit_button, p2_permit_c); p2_permit_panel.add (del_permit_button); // Permit panel p3 GridBagLayout p3_permit_gridbag = new GridBagLayout(); GridBagConstraints p3_permit_c = new GridBagConstraints(); p3_permit_panel.setLayout(p3_permit_gridbag); p3_permit_c.fill = GridBagConstraints.BOTH; p3_permit_c.insets = new Insets(5,5,5,5); // beautyfing p3_permit_c.weightx = 1.0; p3_permit_panel.setLayout(p3_permit_gridbag); ip_permit_list = new List (4, false); p3_permit_c.weightx = 1.0; p3_permit_c.weighty = 1.0; p3_permit_gridbag.setConstraints (ip_permit_list, p3_permit_c); p3_permit_panel.add (ip_permit_list); // Start Stop Panel (startstop_panel) GridBagLayout startstop_gridbag = new GridBagLayout(); GridBagConstraints startstop_c = new GridBagConstraints(); startstop_panel.setLayout(startstop_gridbag); startstop_c.fill = GridBagConstraints.BOTH; startstop_c.insets = new Insets(5,5,5,5); // beautyfing startstop_c.weightx = 1.0; Label port_label = new Label ("Port Number:", Label.CENTER); startstop_gridbag.setConstraints (port_label, startstop_c); startstop_panel.add (port_label); port_textfield = new TextField (4); startstop_c.gridwidth = GridBagConstraints.REMAINDER; //end of row startstop_gridbag.setConstraints(port_textfield, startstop_c); startstop_panel.add (port_textfield); Button start_button = new Button ("Start"); startstop_c.gridwidth = GridBagConstraints.RELATIVE; //end of row startstop_gridbag.setConstraints(start_button, startstop_c); startstop_panel.add (start_button); Button stop_button = new Button ("Stop"); startstop_c.gridwidth = GridBagConstraints.RELATIVE; //end of row startstop_gridbag.setConstraints(stop_button, startstop_c); startstop_panel.add (stop_button); // Ready to show pack(); setTitle("Java Firewall Manager"); // Listeners addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { if (inAnApplet_) { dispose(); } else { System.exit(0); } } }); // File Menu Items file_quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (inAnApplet_) { dispose(); } else { System.exit(0); } }}); help_about.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { aboutJFW_ = new AboutJFW (THIS); aboutJFW_.setVisible(true); }}); // Actions add_deny_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ip_deny_list.add (ip_deny_textfield.getText()); }}); del_deny_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String index = ip_deny_list.getSelectedItem(); if (index != null) { ip_deny_list.remove (index); } else { System.err.println ("No item Selected"); } // int index = ip_deny_list.getSelectedIndex(); // if (index != -1) { // ip_deny_list.replaceItem("", index); // ip_deny_list.delItem (index); // } // else { // System.err.println ("No item Selected"); // } }}); add_permit_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ip_permit_list.add (ip_permit_textfield.getText()); }}); del_permit_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String index = ip_permit_list.getSelectedItem(); if (index != null) { ip_permit_list.remove (index); } else { System.err.println ("No item Selected"); } }}); start_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { fwServer = new FWServer (Integer.parseInt (port_textfield.getText())); } catch (java.io.IOException ex) { ex.printStackTrace(); System.out.println (ex); } }}); } public static void main(String[] args) { JFW jfw = new JFW(); jfw.inAnApplet_ = false; jfw.pack(); jfw.setVisible(true); } } // JFW