📄 e0303fa26d08001c19f0d5298c7864ee
字号:
package deng;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.*;
public class SubWindow {
FireWallApp fwa;
JFrame subFrame;
CheckboxGroup cbg=new CheckboxGroup();
// 第一个Panel上的三个复选框
Checkbox cbx1=new Checkbox("入站",true);
Checkbox cbx2=new Checkbox("出站");
Checkbox cbx3=new Checkbox("转发");
// 第二个Panel上的五个文本框,用于填写IP地址
JTextField jtext1=new JTextField();
JTextField jtext2=new JTextField();
JTextField jtext3=new JTextField();
JTextField jtext4=new JTextField();
JTextField jtext5=new JTextField();
// 第三个Panel上的两个文本框,用于填写端口范围
JTextField jtext3_1=new JTextField();
JTextField jtext3_2=new JTextField();
// 第四个Panel上的下拉框及两个单选按钮
Choice choice=new Choice();
Checkbox chb1=new Checkbox("接受",cbg,true);
Checkbox chb2=new Checkbox("丢弃",cbg,false);
public SubWindow(FireWallApp fwa){
this.fwa=fwa;
init();
}
public void init(){
subFrame=new JFrame("指定IP及端口");
subFrame.setVisible(false);
fwa.subFrame=subFrame;
subFrame.setBounds(500, 240, 300, 320);
subFrame.setResizable(false);
subFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
});//匿名内部类
subFrame.setLayout(null);//手动指定各个组件的位置
subFrame.getContentPane().setBackground(Color.orange);
subFrame.setVisible(true);
JPanel jp1=new JPanel();
jp1.setBounds(0, 0, 300,60);
jp1.setBackground(Color.orange);
jp1.setLayout(null);
JLabel jlabel1_1=new JLabel("请指定数据方向:");
jlabel1_1.setBounds(10, 10, 100, 25);
cbx1.setBounds(10, 30, 50,25);
cbx2.setBounds(60, 30, 50, 25);
cbx3.setBounds(110, 30, 50, 25);
jp1.add(jlabel1_1);
jp1.add(cbx1);
jp1.add(cbx2);
jp1.add(cbx3);
JPanel jp2=new JPanel();
jp2.setLayout(null);
jp2.setBackground(Color.orange);
jp2.setBounds(0, 60, 300, 60);
jtext1.setBounds(50, 20, 40, 25);
jtext1.setColumns(3);
jtext2.setBounds(95, 20, 40, 25);
jtext2.setColumns(3);
jtext3.setBounds(140, 20, 40, 25);
jtext3.setColumns(3);
jtext4.setBounds(185, 20, 40, 25);
jtext4.setColumns(3);
jtext5.setBounds(235, 20, 40, 25);
jtext5.setColumns(3);
JLabel jlabel0=new JLabel("IP域");
jlabel0.setBounds(10, 20, 30, 25);
JLabel jlabel1=new JLabel(".");
jlabel1.setBounds(90, 20, 5, 25);
JLabel jlabel2=new JLabel(".");
jlabel2.setBounds(135, 20, 5, 25);
JLabel jlabel3=new JLabel(".");
jlabel3.setBounds(180, 20, 5, 25);
JLabel jlabel4=new JLabel("/");
jlabel4.setBounds(228, 20, 7, 25);
jp2.add(jlabel0);
jp2.add(jtext1);
jp2.add(jlabel1);
jp2.add(jtext2);
jp2.add(jlabel2);
jp2.add(jtext3);
jp2.add(jlabel3);
jp2.add(jtext4);
jp2.add(jlabel4);
jp2.add(jtext5);
JPanel jp3=new JPanel();
jp3.setLayout(null);
jp3.setBounds(0, 120,300,60);
jp3.setBackground(Color.orange);
JLabel jlabel3_1=new JLabel("端口范围");
JLabel jlabel3_2=new JLabel(":");
jlabel3_1.setBounds(10, 20, 80, 25);
jlabel3_2.setBounds(130, 20, 5, 25);
jtext3_1.setBounds(85, 20, 40, 25);
jtext3_2.setBounds(140, 20, 40, 25);
jp3.add(jlabel3_1);
jp3.add(jlabel3_2);
jp3.add(jtext3_1);
jp3.add(jtext3_2);
JPanel jp4=new JPanel();
jp4.setLayout(null);
jp4.setBackground(Color.orange);
jp4.setBounds(0, 180, 300, 60);
JLabel jl4=new JLabel("协议");
jl4.setBounds(10, 20, 40, 25);
choice.addItem("tcp");
choice.addItem("udp");
choice.addItem("icmp");
choice.addItem("all");
choice.setBounds(50, 20, 50, 25);
JLabel jl4_2=new JLabel("策略");
jl4_2.setBounds(140, 20, 40, 25);
chb1.setBounds(170, 20, 40, 25);
chb2.setBounds(215, 20, 40, 25);
jp4.add(jl4);
jp4.add(choice);
jp4.add(jl4_2);
jp4.add(chb1);
jp4.add(chb2);
JPanel jp5=new JPanel();
jp5.setBackground(Color.orange);
jp5.setBounds(0, 240, 300, 60);
JButton jb1=new JButton("确定");
jb1.addActionListener(new MyActionListener());
JButton jb2=new JButton("取消");
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
subFrame.setVisible(false);
fwa.subFrame=null;//释放资源
}
});
jp5.add(jb1);
jp5.add(jb2);
subFrame.add(jp1);
subFrame.add(jp2);
subFrame.add(jp3);
subFrame.add(jp4);
subFrame.add(jp5);
}
// public static void main(String ar[])
// {
// SubWindow s=new SubWindow(new FireWallApp());
//
// }
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//ArrayList errorList=new ArrayList();
String error="";
String [] direction=new String[3];
if(cbx1.getState())
direction[0]=cbx1.getLabel();
if(cbx2.getState())
direction[1]=cbx1.getLabel();
if(cbx3.getState())
direction[2]=cbx1.getLabel();
// 简单的判断IP与端口的正确性
if(jtext1.getText().equals("")||jtext1.getText().equals("")||jtext1.getText().equals(""))
{
error="IP地址不能为空!";
JOptionPane.showMessageDialog(null, error);
return;
}
String error2="",error3="";
try{
if(Integer.parseInt(jtext1.getText())>255
||Integer.parseInt(jtext2.getText())>255
||Integer.parseInt(jtext3.getText())>255
||Integer.parseInt(jtext4.getText())>255)
{
error="IP地址为不大于255的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if(Integer.parseInt(jtext3_1.getText())>65535||Integer.parseInt(jtext3_1.getText())>65535)
{
error="端口地址为不大于65535的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if(jtext5.getText().trim().equals("")&&Integer.parseInt(jtext5.getText())>32)
{
error="网络号位数不能大于32!";
JOptionPane.showMessageDialog(null, error);
return;
}
}catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,"IP,网络号位数与端口地址必须输入整数!");
return;
}
// 以上是判断IP与端口的正确性
Rule rule=new Rule();//根据所填写的信息构造一个Rule对象
rule.setDirection(direction);
String name="";
try{
name=JOptionPane.showInputDialog(subFrame, "请为所设置的规则指定一个名称").trim();
}catch(Exception e){
return;//按取消键就返回
}
if(name.equals(""))return;
System.out.println("**********");
rule.setName(name);
String ip=jtext1.getText()+"."+jtext2.getText()+"."+jtext3.getText()+"."+jtext4.getText();
if(!jtext5.getText().equals(""))
ip=ip+"/"+jtext5.getText();
rule.setIP(ip);
String port;
if(jtext3_1.getText().equals("")&&jtext3_1.getText().equals(""))
port="";
else if(jtext3_1.getText().equals(""))
port=jtext3_2.getText();
else if(jtext3_2.getText().equals(""))
port=jtext3_1.getText();
else
port=jtext3_1.getText()+":"+jtext3_2.getText();
rule.setPort(port);
rule.setProtocol(choice.getSelectedItem());
String strategy=cbg.getSelectedCheckbox().getLabel();
if(strategy.equals("接受"))
strategy="accept";
else
strategy="drop";
rule.setStrategy(strategy);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -