java图形接口_Java自学总结之七图形用户接口

图形用户接口也就是一个人机交互的界面,下面先介绍一下界面的组成:

1. JFrame框架,这个是屏幕上的Windows的对象,在创建界面时,这个是首要创建的,如果把设计一个界面比喻为画水彩画,那么它就相当于一个支架,在画画前先安好支架如右图

0818b9ca8b590ca3270a3433284dd417.png

2. JPanel面板,组件是不能直接加载JFrame上的,必须先得到面板,然后在添加其他组件,面板就和上图的画板一个道理

3. widget组件,就相当于在画板上画的图形,JButton、JCHeckBox等

JFrame frame;

JButton button;

frame = new JFrame();

button = new JButton("click me!");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Windows关闭时该程序自动关闭

frame.getContentPane().add(button);

frame.setSize(300, 300);

frame.setVisible(true);

上面是一个设计了一个单纯的界面,那么下面将介绍如何设计一个有功能的界面  ,这里以按钮组件为例,在按下按钮之前显示"click me",在按下按钮之后显示"I have been clicked",那么这里就有一个问题就是程序如何知道按钮被按下,如何知道要改变按钮上的文字:

1. 事件来源:JButton ,JCheckBox等组件接收注册,并在取得用户的操作,并调用相应的接口方法

2. 事件对象:MouseEvent, KeyEvent等,在调用接口的方法时,此会作为参数被调用

3.监听接口:MouseListener,KeyListener等接口,这里,我们一般扮演监听接口的任务,也就是向按钮等组件注册并实现接口的方法

当我们对事件来源做出相关的动作时会产生事件对象。

public class SimpleGuil implements ActionListener{

JFrame frame;

JButton button;

public static void main(String[] args) {

// TODO Auto-generated method stub

SimpleGuil gui = new SimpleGuil();

gui.go();

}

public void go(){

frame = new JFrame();

button = new JButton("click me!");

button.addActionListener(this);//注册,并得到事件对象

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(button);

frame.setSize(300, 300);

frame.setVisible(true);

}

public void actionPerformed(ActionEvent event){//这里就是接口的实现方法,当用户做出相应的操作时,编辑器就会自动调用这个函数,而不用我们手动调用

button.setText("I have been clicked!");

}

}这里我再写一下关于面板的问题,面板类JPanel的方法是PaintComponent()函数,一般情况下,我们是不会自己调用该函数,而是面板所处的Frame显示时,该函数就会被调用

public class SimpleAnimation {

int x = 70;

int y = 70;

public static void main(String[] args) {

// TODO Auto-generated method stub

SimpleAnimation gui = new SimpleAnimation();

gui.go();

}

public void go(){

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MyDrawPanel1 drawPanel = new MyDrawPanel1();

frame.getContentPane().add(drawPanel);

frame.setSize(300, 300);

frame.setVisible(true);

for(int i = 0;i<130;i++)

{

x++;

y++;

drawPanel.repaint();

try{

Thread.sleep(50);

}catch(Exception ex){}

}

}

class MyDrawPanel1 extends JPanel {//这边引入了一个内部类的概念

public void paintComponent(Graphics g){

g.setColor(Color.white);

g.fillRect(0, 0, this.getWidth(), this.getHeight());

g.setColor(Color.green);

g.fillOval(x, y, 40, 40);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值