项目结构:
——UI -- JFrame JButton
-- 进行分区 按钮功能区+显示功能区
-- JFrame 默认边框布局 -- 东南西北中五个方向
——Listener -- ActionListener
——ImageEffic -- 图片文件转二维数组 各种图片处理效果
1.UI
创建类ImageUI 继承 JFrame 作为窗体类
public class ImageUI extends JFrame{
String[] jbustr = {"原图","马赛克","灰度","二值化","轮廓检测","手绘风格","油画融合"};
Static final ImageListener imageListener = new ImageListener();
int[][] imgArr;//声明一个数组
ImageEffic imgeff;
public Graphics g;
public static void main(String[] args){
ImageUI ui = new ImageUI();
ui.initUI();
}
public void initUI(){
this.setTitle("图形编程");
this.setSize(800,800);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
//进行分区,按钮功能区+显示功能区
//按钮功能区--流式布局
JPanel jp1 = new JPanel();
jp1.setBackground(Color.DARK_GRAY);
Dimension dim = new Dimension(120,0);
jp1.setPreferredSize(dim);
Dimension jbudim = new Dimension(110,35);
//添加按钮
for(int i=0;i<jbustrs.length;i++){
JButton jbu = new JButton(jbustrs[i]);
jbu.setBackground(Color.WHITE);
jbu.setPreferredSize(btndim);
jbu.addActionListener(imageListener);
jp1.add(jbu);
}
//绘图区
JPanel jp2 = new JPanel();
jp2.setBackground(Color.Black);
//布置jp1和jp2的位置
add(jp1,BorderLayout.EAST);
add(jp2,BorderLayout.CENTER);
setVisible(true);
//从jp2获取画笔对象
Graphics g = jp2.getGraphics();
imageListener.g=g
}
}
2.Listener
重写抽象方法
将一幅图片加载到内存的方法是:
String path = "文件路径";
BufferedImage image = ImageIO.read(File 对象);
//BufferedImage生成的图片在内存里有一个图