⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 e0303fa26d08001c19f0d5298c7864ee

📁 基于linux操作系统
💻
字号:
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 + -