📄 hideinfopanel.java
字号:
if (retVal==JFileChooser.APPROVE_OPTION)
{
this.targetTxt=jfc.getSelectedFile();
this.pathFile2.setText(this.targetTxt.getAbsolutePath());
}
else this.targetTxt=null;
}
}
if(((JButton)e.getSource()).equals(this.bFile3)) //按下的是第三个 选择目标图像文件的按钮,只有隐藏模式有用
{
int retVal=jfc.showOpenDialog(this);
if (retVal==JFileChooser.APPROVE_OPTION)
{
this.targetBMP=jfc.getSelectedFile();
// System.out.println("File name is : " +this.targetBMP.getAbsolutePath());
this.pathFile3.setText(this.targetBMP.getAbsolutePath());
}
else this.targetBMP=null;
}
if(((JButton)e.getSource()).equals(this.bMode)) //安下的是 切换模式按钮
{
if (this.isHideMode) // Hide2Get //不同的模式有不同的界面、组件位置,所以要重新设置一堆东西
{
this.isHideMode=false;
// this.bMode.setText("Get模式");
this.bFile1.setText("选择待解隐图像");
this.bFile2.setText("选择目的文本");
this.bFile3.setEnabled(false);
this.bFile3.setVisible(false);
this.tag3.setEnabled(false);
this.tag3.setVisible(false);
this.pathFile1.setText("");
this.pathFile2.setText("");
this.pathFile3.setText("");
this.pathFile3.setEnabled(false);
this.pathFile3.setVisible(false);
this.bOp.setText("开始提取操作");
this.status.setText("当前模式:信息提取模式");
this.originBMP=null;
this.originTxt=null;
this.targetBMP=null;
this.targetTxt=null;
this.show2.setVisible(false);
this.show2.setImage(null);
this.show1.setImage(null);
this.show1.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"含隐藏信息的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
this.bOp.setBounds(70,200,120,80);
this.bMode.setBounds(70,310,120,80);
this.show1.setBounds(330,180,230,230);
this.repaint();
this.show1.repaint();
this.show2.repaint();
}
else //Get2Hide
{
this.isHideMode=true;
// this.bMode.setText("Hide模式");
this.bFile1.setText("选择原图像文件");
this.bFile2.setText("选择待隐藏文本");
this.bFile3.setEnabled(true);
this.bFile3.setVisible(true);
this.tag3.setEnabled(true);
this.tag3.setVisible(true);
this.pathFile1.setText("");
this.pathFile2.setText("");
this.pathFile3.setText("");
this.pathFile3.setEnabled(true);
this.pathFile3.setVisible(true);
this.bOp.setText("开始隐藏操作");
this.status.setText("当前模式:信息隐藏模式");
this.originBMP=null;
this.originTxt=null;
this.targetBMP=null;
this.targetTxt=null;
this.show2.setVisible(true);
this.show2.setImage(null);
this.show1.setImage(null);
this.show1.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"隐藏前的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
this.show2.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"隐藏后的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
this.show1.setBounds(220,200,230,230);
this.bOp.setBounds(70,220,120,100);
this.bMode.setBounds(70,340,120,80);
this.repaint();
this.show1.repaint();
this.show2.repaint();
}
}
if(((JButton)e.getSource()).equals(this.bOp)) //按下了开始按钮
{
if (this.isHideMode) //看模式来决定什么操作 这是隐藏模式
{
//check if valid
if (this.originBMP==null || !this.originBMP.exists())
{
this.status.setText("提示:源图像文件不存在,请重新指定源图像文件");
return; //先看源图像是不是存在
}
if (!this.originBMP.getName().substring(this.originBMP.getName().length()-3).toLowerCase().equals("bmp"))
{
this.status.setText("提示:源图像文件不是BMP格式,请重新指定");
return; //再看源图像是不是bmp文件
}
if (this.originTxt==null || !this.originTxt.exists())
{
this.status.setText("提示:待隐藏文本文件不存在,请重新指定");
return; //看源文本是不是存在
}
if (this.targetBMP==null)
{
this.status.setText("提示:请指定目标图像文件");
return; //看目的图像是不是已经指定
}
if (!this.targetBMP.getName().substring(this.targetBMP.getName().length()-3).toLowerCase().equals("bmp"))
{
this.status.setText("提示:不是BMP格式,请重新指定目的图像文件");
return;//看目的图像是不是BMP
}
int result=InfoHiding.hide(this.originBMP,this.originTxt,this.targetBMP);
//进行隐藏操作
switch (result)
{//查看返回信息,根据返回的int值来确定程序运行是不是成功 发生什么错误
case 0:
this.status.setText("成功:已完成信息隐藏操作");
this.show2.setImage(new BMP(new File(this.pathFile3.getText())).getImage());
this.show2.repaint();
break;
case 1:
this.status.setText("提示:源文件和目标文件不能是同一个文件,请重新指定");
break;
case 23:
this.status.setText("提示:不能打开目的文件,请重新指定目的文件");
break;
case 28:
this.status.setText("提示:读取源图像头部信息失败,请重新指定源图像");
break;
case 31:
this.status.setText("提示:源图像不是BMP文件,请重新指定源图像");
break;
case 32:
this.status.setText("提示:源图像文件已包含隐藏信息,请重新指定源图像");
break;
case 51:
this.status.setText("提示:源图像容量不足以隐藏指定文件,请重新指定源图像");
break;
case 33:
this.status.setText("提示:源图像经过压缩,请重新指定源图像");
break;
case 34:
this.status.setText("提示:颜色位数不在支持范围,请重新指定源图像");
break;
default:
this.status.setText("错误号:"+result);
break;
}
this.originBMP=null;
this.pathFile1.setText("");
this.originTxt=null;
this.pathFile2.setText("");
this.targetBMP=null;
this.pathFile3.setText(""); //操作完成后 清除不必要的量
}
else // 提取操作 同上
{
if (this.originBMP==null || !this.originBMP.exists())
{
this.status.setText("提示:源图像文件不存在,请重新指定源图像文件");
return;
}
if (!this.originBMP.getName().substring(this.originBMP.getName().length()-3).toLowerCase().equals("bmp"))
{
this.status.setText("提示:目标图像不是BMP格式,请重新指定源图像文件");
return;
}
if (this.targetTxt==null)
{
this.status.setText("提示:请指定目标文本文件");
return;
}
int result=InfoGetting.get(this.originBMP,this.targetTxt);
switch (result)
{
case 0:
this.status.setText("成功:已完成信息提取操作");
break;
case 1:
this.status.setText("提示:源文件和目标文件不能是同一个文件,请重新指定");
break;
case 28:
this.status.setText("提示:读取源图像头部信息失败,请重新指定源图像");
break;
case 31:
this.status.setText("提示:源图像不是BMP文件,请重新指定源图像");
break;
case 32:
this.status.setText("提示:源图像文件不包含隐藏信息,请重新指定源图像");
break;
case 33:
this.status.setText("提示:源图像经过压缩,请重新指定源图像");
break;
case 34:
this.status.setText("提示:颜色位数不在支持范围,请重新指定源图像");
break;
case 51:
this.status.setText("提示:源图像容量不足以隐藏指定文件,请重新指定源图像");
break;
case 23:
this.status.setText("提示:不能打开目的文件,请重新指定目的文件");
break;
case 43:
this.status.setText("提示:向目的文件写入时发生错误");
break;
default:
this.status.setText("错误号:"+result);
break;
}
this.originBMP=null;
this.pathFile1.setText("");
this.targetTxt=null;
this.pathFile2.setText("");
this.pathFile3.setText("");
}
}
}//
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(im,0,0,800,500,this); //绘制背景
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -