📄 50ad7b35350c001c1847d7f4734b3a60
字号:
package deng;
import java.awt.Checkbox;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxUI.ItemHandler;
public class MainWindow {
/**
* @param args
*/
JFrame frame;
FireWallApp fwa;
JButton jb1;
JButton addB;
CheckboxGroup cbg=new CheckboxGroup();
Checkbox chb=new Checkbox("默认",cbg,true);
Checkbox chb2=new Checkbox("自定义",cbg,false);
Checkbox cbx0=new Checkbox("eth0",true);
Checkbox cbx1=new Checkbox("eth1");
int Y1=1;
int Y2=1;
JPanel panel2=new JPanel();//由于在内部类中要用到故单独将其作为全局变量
JPanel panel2_2_1=new JPanel(new GridLayout(0,1));
//几个默认服务规则
// public static void main(String ar[])
// {
// MainWindow s=new MainWindow(new FireWallApp());
//
// }
//
public MainWindow(FireWallApp fwa){
this.fwa=fwa;
init();
}
public void init(){
//fwa.subFrame.setVisible(false);//让子窗口不可见
fwa.serverRuleList=(MyArrayList)FilesIO.readRuleListFromFile("E:\\FireWall\\RuleList.txt");
frame=new JFrame("网络防火墙配置");
fwa.mainFrame=frame;//赋给所属应用的成员变量
frame.setBounds(500, 200, 300, 400);
frame.getContentPane().setBackground(Color.orange);
frame.setResizable(false);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
frame.dispose();
System.exit(0);
}
});//匿名内部类
frame.setLayout(null);//手动指定各个组件的位置
JLabel label=new JLabel();
label.setText("请选择设置方式");
label.setBounds(10, 10, 100, 20);
if(fwa.serverRuleList.size()>0)
{//如果程序再次运行时自定义规则集里有规则,则"自定义"单选按钮默认选中
chb.setState(false);
chb2.setState(true);
}
chb.setBounds(110, 10, 50,20);
MyItemListener myListener=new MyItemListener();
chb.addItemListener(myListener);
chb2.setBounds(170, 10, 50,20);
chb2.addItemListener(myListener);
// 第一个panel
JPanel panel=new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, 300, 30);
panel.setBackground(Color.white);
panel.add(label);
panel.add(chb);
panel.add(chb2);
// 第二个panel
panel2.setBackground(Color.orange);
panel2.setLayout(null);
panel2.setBounds(0, 30, 300, 290);
JLabel label2_1=new JLabel("信任的设备:");
label2_1.setBounds(10, 30, 90, 20);
JLabel label2_2=new JLabel("允许的服务:");
label2_2.setBounds(10, 110, 90, 20);
addB=new JButton("添加");
addB.setBounds(10, 150, 80, 25);
addB.addActionListener(new MyActionListener());
JPanel panel2_1_1=new JPanel(new GridLayout(0,1));
//panel2_1_1.setSize(190,50);
panel2_1_1.setBackground(Color.white);
JScrollPane panel2_1=new JScrollPane(panel2_1_1);
panel2_1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
panel2_1.setBounds(100, 20, 190, 50);
panel2_1.setBackground(Color.white);
cbx0.setBounds(1,Y1,50,15);
Y1=Y1+16;
cbx1.setBounds(1,Y1,50,15);
Y1=Y1+16;
panel2_1_1.add(cbx0);
panel2_1_1.add(cbx1);
//JPanel panel2_2_1=new JPanel();已作为成员变量定义
// panel2_2_1.setSize(190, 180000);
// panel2_2_1.setLayout();
panel2_2_1.setBackground(Color.white);
// panel2_2.getViewport().setView(panel2_2_1);
//panel2_2.createVerticalScrollBar();
JScrollPane panel2_2=new JScrollPane(panel2_2_1,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// panel2_2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
panel2_2.setBounds(100, 95, 190, 184);
panel2_2.setBackground(Color.white);
//×××××××××××××××××××××××××
Checkbox cb=cbg.getSelectedCheckbox();
if(cb!=null)
if(cb.getLabel().equals("默认"))
{
addB.setEnabled(false);
cbx0.setEnabled(false);
cbx1.setEnabled(false);
panel2_2_1.removeAll();
Y2=1;
for(int i=0;i<fwa.defaultServerRuleList.size();i++){
Rule rule=new Rule();
rule=(Rule)fwa.defaultServerRuleList.get(i);
Checkbox cbxf=new Checkbox(rule.getName(),true);
cbxf.setBounds(1,Y2,100,15);
Y2=Y2+16;
panel2_2_1.add(cbxf);
}
}else{
System.out.println("否则有自定义的规则显示之");
fwa.flag=true;
panel2_2_1.removeAll();
Y2=1;
for(int i=0;i<fwa.serverRuleList.size();i++){
Rule rule=new Rule();
rule=(Rule)fwa.serverRuleList.get(i);
Checkbox cbxf=new Checkbox(rule.getName(),true);
cbxf.setBounds(1,Y2,100,15);
Y2=Y2+16;
panel2_2_1.add(cbxf);
// panel2_2_1.setLayout(null);
}
addB.setEnabled(true);
cbx0.setEnabled(true);
cbx1.setEnabled(true);
}
// Checkbox cbxf1=new Checkbox("www(HTTP)",true);
// Checkbox cbxf2=new Checkbox("FTP",true);
// Checkbox cbxf3=new Checkbox("Telnet",true);
// Checkbox cbxf4=new Checkbox("SMTP",true);
// Checkbox cbxf5=new Checkbox("SSH",true);
// Checkbox cbxf6=new Checkbox("DHCP",true);
// cbxf1.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// cbxf2.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// cbxf3.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// cbxf4.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// cbxf5.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// cbxf6.setBounds(1,Y2,100,15);
// Y2=Y2+16;
// panel2_2.add(cbxf1);
// panel2_2.add(cbxf2);
// panel2_2.add(cbxf3);
// panel2_2.add(cbxf4);
// panel2_2.add(cbxf5);
// panel2_2.add(cbxf6);
//
panel2.add(label2_1);
panel2.add(panel2_1);
panel2.add(label2_2);
panel2.add(panel2_2);
panel2.add(addB);
// 第三个panel
JPanel panel3=new JPanel();
panel3.setBackground(Color.orange);
panel3.setLayout(null);
panel3.setBounds(0, 320, 300, 80);
//panel3.setBackground(Color.white);
//JButton jb1=new JButton("确定");
jb1=new JButton("确定");
jb1.addActionListener(new MyActionListener());
JButton jb0=new JButton("取消");
jb0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(fwa.subFrame!=null)
fwa.subFrame.dispose();
fwa.mainFrame.dispose();
System.exit(0);
}
});
jb1.setBounds(80, 15, 80, 25);
jb0.setBounds(180, 15, 80,25);
panel3.add(jb1);
panel3.add(jb0);
frame.getContentPane().add(panel);
frame.getContentPane().add(panel2);
frame.getContentPane().add(panel3);
frame.getContentPane().setBackground(Color.orange);
frame.setVisible(true);
}
//内部类,单选按钮的监听器
class MyItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
Checkbox cb=cbg.getSelectedCheckbox();
if(cb!=null)
if(cb.getLabel().equals("默认"))
{
addB.setEnabled(false);
cbx1.setState(false);
cbx0.setEnabled(false);
cbx1.setEnabled(false);
if(fwa.flag==true){//fwa.flag初始值是false,直到自定义规则成功方可让让默认规则重现
fwa.flag=false;//马上重置为false
panel2_2_1.removeAll();
Y2=1;
for(int i=0;i<fwa.defaultServerRuleList.size();i++){
Rule rule=new Rule();
rule=(Rule)fwa.defaultServerRuleList.get(i);
Checkbox cbxf=new Checkbox(rule.getName(),true);
cbxf.setBounds(1,Y2,100,15);
Y2=Y2+16;
panel2_2_1.add(cbxf);
}
}
}else{//如果是自定义单选按钮被选中且自定义规则集里有规则则显示自定义规则
fwa.flag=true;
if(fwa.serverRuleList.size()!=0)
{
panel2_2_1.removeAll();
Y2=1;
for(int i=0;i<fwa.serverRuleList.size();i++){
Rule rule=new Rule();
rule=(Rule)fwa.serverRuleList.get(i);
Checkbox cbxf=new Checkbox(rule.getName(),true);
cbxf.setBounds(1,Y2,100,15);
Y2=Y2+16;
panel2_2_1.add(cbxf);
}
}
addB.setEnabled(true);
cbx0.setEnabled(true);
cbx1.setEnabled(true);
}
}
}
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Checkbox cb=cbg.getSelectedCheckbox();
if(e.getActionCommand().equals("添加"))
{
new SubWindow(fwa);//单击“添加”时运行子窗口程序,产生子窗口
fwa.subFrame.setVisible(true);
}else if(e.getActionCommand().equals("确定")){
if(cb!=null&&cb.getLabel().equals("自定义"))
{
if(FilesIO.saveRuleListToFile(fwa.serverRuleList)&&FilesIO.writeAllRulesToScript(fwa.serverRuleList))//如果规则写入成功则关闭添加窗口
{
JOptionPane.showMessageDialog(null,"已经按您的自定义规则应用!" );
}
}else if(cb!=null&&cb.getLabel().equals("默认")){
if(FilesIO.writeAllRulesToScript(fwa.defaultServerRuleList))//如果规则写入成功则关闭添加窗口
JOptionPane.showMessageDialog(null,"已经按默认规则应用!" );
}else
JOptionPane.showMessageDialog(null,"出错!" );
if(fwa.subFrame!=null)
fwa.subFrame.dispose();
fwa.mainFrame.dispose();
System.exit(0);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -