简单画板的总结
最近搞完了一个比较低级的画板和计算器,逐渐熟悉了java中的界面内容,现在做一个总结。
在java中,它会给用户提供组成界面的各个部分,我们所做的就是把这些东西找出来加以调用,将它们拼成一个完整的界面,Java中提供这些东西的包叫做swing。以一个计算器为例,首先要有一个大容器来装载所要用到的零件,这个最大的容器叫做JFrame。显示文档的东西叫做JTextField,添加按钮可以用到
JButton,添加菜单可以用到JMenuBar。。。。。。所有这些东西可以添加到JFrame中,比JFrame小一个等级的是JPanel类,这个东西可以存放出去JFrame类的其他东东,其它用法和JFrame类一样。
由上而下,首先要用到的组件是JMenuBar,这个东西是一个菜单栏。菜单栏从左到右有各种选项,这些选项的建立要用到JMenu,实例化一个JMenu后,就可以在它的上面利用数组和循环添加N多的按钮。这些按钮又会有各自的子按钮,搞定这些字按钮要用到JMenuItem,这个也要用数组和循环添加其中的子选项。比如一个菜单栏上有三个按钮,第一个按钮有四个选项,第二个有两个,第三个也有两个。我们需要定义一个一维数组和一个二维数组
JMenuBar jm = initJMenuBar();
public JMenuBar initJMenuBar(){
String [] array1 = {“1”,“2”,“3”};
String [] array2 = {{“1”,“2”,“3”,“4”}{“1”,“2”}{“1”,“2”}};
for(int i=0;i<array1.length;i++){
JMenu jm = new JMenu(array1[i])
for(int j=0;j<array2[i].length;j++){
JMenuItem jt = new JMenuItem(array2[i][j])
}
jm1.add(jt);
}
jm.add(jm1)
}
搞定了菜单栏,就会有一个文本输入栏,先实例化后添加到窗口上,而窗口默认的是将这个文本居中显示,占了所有的空间,所以要设置它的布局,可以要先设置其布局,在计算器中我给它设置了一个边框布局jf.setLayout(jt,GridLayout.NORTH)。之后我们会用到很多按钮,定义一个数组用来循环生成按钮。实例化按钮要用到JButton类。为了让按钮看着好看,我们要用到网格布局,
假设放置按钮的面板为jp1,则其格式为
jp1.setLayout(newGridLayout(a,b,c,d));
除了按钮,窗体上通常还有文本输入栏,这个可以用JTextField()设置,其中()里面输入数字说明文本栏的长度。
现在以画板来总体说明一下。画板我总共搞了一个菜单栏和三个面板,三个JPanel类面板分别以BorderLayout的布局分布在JFrame窗体的西,南和中部。西面的JPanel存放工具栏,大约14个按钮按照GridLayout(2,7)的布局分布在上面。南面的JPanel存放颜色板。中部的JPanel弄了一个画布,利用Graphics gr=jp3.getGraphics搞定。Jp1上的画板工具按钮要用一些图片表示,这就需要我们定义一个数组来存储图形。
String [] array = {"image/图片的名字.格式"。。。。。。。};
我们要把这个数组添加到图标上,然后再将这些图标添加到按钮上。实例化图标的格式是
ImageIcon im = new ImageIcon(array[i]);
JButton jb = new JButton(im);类似的,在jp2中也要定义一个数组搞定颜色栏。
Color [] array={Color.WHITE,new Color(x,y,z)};
要实现对这里的各种按钮的选定,要给这些按钮添加一个监听器,这里我以内部匿名类的方式添加一个监听器。
ActionListener ac = new ActionListener(){
//实现具体的动作
public void ActionPerformed(ActionEvent e){
//具体的动作要求要在这里弄
}
};定义了一个内部匿名类后要给分别给ColorPanel和ToolsPanel添加这个监听器。除了界面的布局外,还得给画板的画图添加具体的处理方法。
DrawingLIstener dr = new DrawingListener(这里面要存放要用到的被传递的参数);在画图板中在DrawingListener类继承了MouseListener接口和MouseMotionListener接口。在添加的各种方法中就会写关于画图的。在画板中主要用到了 DrawLine();DrawOval();DrawRect();来画直线,椭圆和矩形。在画椭圆和矩形的时候要注意各种坐标的组合,这样才能画出正确图形。画喷枪的时候要定义一个随机数,搞刷子的时候要用到
//设置线条的粗细
Graphics2D g2 = (Graphics2D)gr;
g2.setStroke(new BasicStroke(10));
搞橡皮的时候把颜色设置成为白色。除了画多边形的时候要定义两组变量来存储,其它图形没有什么难度。以上就是我做简单画图板的总结,有不对的地方欢迎大家指教。