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