前面我们在面向对象的初步认识过程中了解了一些重要的东西,那么真正开始进入面向对象学习与开发的阶段那么就是从现在开始了。
探索图形化界面,监听器等的使用;
像windows一样,我们如何来书写程序,运用方法,来弹出一个类似的框框呢?
介绍一个JFrame类,这个类就可以做到;
import java.awt.Color;
import javax.swing.JFrame;
public class DrawUI extends JFrame{
/**
*主函数,程序入口,DrawUI类
*
**/
public static void main(String[] args) {
DrawUI dra=new DrawUI();
dra.seway();
}
/**
*窗体的属性
*
**/
public void seway(){
this.setSize(700,700);//窗体大小
this.setTitle("我的第一个窗体");//标题
this.setResizable(false);//不可改变大小
this.setDefaultCloseOperation(3);//点击X的时候关闭程序
this.setLocationRelativeTo(null);//现实在屏幕中间
this.getContentPane().setBackground(Color.green);//背景色
this.setVisible(true);//显示出来
}
}
如图,写好的窗体已经显示出来了
上面光秃秃的,如果能在上面加上几个按钮或者输入框就好了
进行添加如下代码:
//添加按钮
JButton button1=new JButton("点击我一下");
this.add(button1);
效果如图:
诶?我刚才设置的背景色怎么不见了?怎么看起来这个按钮充满了整个屏幕啊?
好的,这是因为,在窗体上面没有给我们添加的组件设置布局,导致这个按钮填充了整个窗体,继续修改代码,添加一行:
this.setLayout(new FlowLayout());//添加流式布局
这次显示出来的效果就不一样了
继续拓展,窗体上已经有了按钮,但是却什么都不能干,我现在想当我点击按钮的时候能在这个窗体上面画直线,该如何去做呢?我们需要在这个按钮上加时间监听器,当点击按钮的时候开始在窗体上面绘制直线,还要给窗体加上鼠标监听器,得到按下和松开的两个点的坐标,然后才能画直线。画直线不是直接画到窗体上的,而是在这上面添加一块画布,得到画布,然后在画布上面绘制直线。
代码如下:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
public class DrawUI extends JFrame{
/**
*主函数,程序入口,DrawUI类
*
**/
public static void main(String[] args) {
DrawUI dra=new DrawUI();
dra.seway();
}
/**
*窗体的属性
*
**/
public void seway(){
this.setSize(700,700);//窗体大小
this.setTitle("我的第一个窗体");//标题
this.setResizable(false);//不可改变大小
this.setDefaultCloseOperation(3);//点击X的时候关闭程序
this.setLocationRelativeTo(null);//现实在屏幕中间
this.getContentPane().setBackground(Color.green);//背景色
this.setLayout(new FlowLayout());//添加流式布局
//添加按钮
JButton button1=new JButton("点击我一下");
this.add(button1);
button1.setActionCommand("line");
this.setVisible(true);//显示出来
Graphics g=this.getGraphics();
DrawUIListener dui=new DrawUIListener(g);
this.addMouseListener(dui);
button1.addActionListener(dui);
}
}
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DrawUIListener implements MouseListener,ActionListener{
private Graphics g;
private String command;
private int x1,y1,x2,y2;
public DrawUIListener (Graphics g){
this.g=g;
}
public void actionPerformed(ActionEvent e) {
command=e.getActionCommand();
}
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
if(command.equals("line")){
g.drawLine(x1, y1, x2, y2);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
}
效果如图:
好了 ,监听器这个类已经介绍的差不多了 ,还有很多种监听器,大家可以一一去试一下,在java.awt.event这个包下面