栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java必学必会之GUI编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java必学必会之GUI编程

一、事件监听

测试代码一:

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;

public class TestTextField {
 public static void main(String args[]) {
  new MyframeTextField();
 }
}

class MyframeTextField extends frame {
 MyframeTextField() {
  TextField tf = new TextField();
  add(tf);
  tf.addActionListener(new Monitor3());
  tf.setEchoChar('*');
  
  setVisible(true);
  pack();
 }
}

class Monitor3 implements ActionListener {
 
 public void actionPerformed(ActionEvent e) {
  
  TextField tf = (TextField) e.getSource();
  
  System.out.println(tf.getText());// tf.getText()是取得文本框里面的内容
  tf.setText("");// 把文本框里面的内容清空
 }
}

测试代码二:

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;
public class TestActionEvent2{
 public static void main(String args[]){
  frame f = new frame("TestActionEvent");
  Button btn1 = new Button("start");
  Button btn2 = new Button("stop");
  Monitor2 m2 = new Monitor2();//创建监听对象
  btn1.addActionListener(m2);
  
  btn2.addActionListener(m2);
  btn2.setActionCommand("GameOver");//设置btn2的执行单击命令后的返回信息
  f.add(btn1,BorderLayout.NORTH);
  f.add(btn2,BorderLayout.CENTER);
  
  f.pack();
  f.setVisible(true);
 }
}

class Monitor2 implements ActionListener{
 public void actionPerformed(ActionEvent e){
  System.out.println("a button has been pressed,"+"the relative info is:n"+e.getActionCommand());
  
 }
}

二、TextField事件监听

测试代码:

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;

public class TestTextField {
 public static void main(String args[]) {
  new MyframeTextField();
 }
}

class MyframeTextField extends frame {
 MyframeTextField() {
  TextField tf = new TextField();
  add(tf);
  tf.addActionListener(new Monitor3());
  tf.setEchoChar('*');
  
  setVisible(true);
  pack();
 }
}

class Monitor3 implements ActionListener {
 
 public void actionPerformed(ActionEvent e) {
  
  TextField tf = (TextField) e.getSource();
  
  System.out.println(tf.getText());// tf.getText()是取得文本框里面的内容
  tf.setText("");// 把文本框里面的内容清空
 }
}

使用TextField类实现简单的计算器

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;

public class TestMath {
 public static void main(String args[]) {
  new TFframe();
 }
}


class TFframe extends frame {
 TFframe() {
  
  TextField num1 = new TextField(10);
  TextField num2 = new TextField(10);
  TextField num3 = new TextField(15);
  
  Button btnEqual = new Button("=");
  btnEqual.addActionListener(new MyMonitor(num1, num2, num3));
  
  Label lblPlus = new Label("+");
  
  setLayout(new FlowLayout());
  
  add(num1);
  add(lblPlus);
  add(num2);
  add(btnEqual);
  add(num3);
  pack();
  setVisible(true);

 }
}

class MyMonitor implements ActionListener {
 TextField num1, num2, num3;

 
 public MyMonitor(TextField num1, TextField num2, TextField num3) {
  this.num1 = num1;
  this.num2 = num2;
  this.num3 = num3;
 }

 public void actionPerformed(ActionEvent e) {
  
  int n1 = Integer.parseInt(num1.getText());
  int n2 = Integer.parseInt(num2.getText());
  num3.setText("" + (n1 + n2));
  num1.setText("");
  
  num2.setText("");
  // num3.setText(String.valueOf((n1+n2)));
  
 }
}

JAVA里面的经典用法:在一个类里面持有另外一个类的引用

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;

public class TestMath1 {
 public static void main(String args[]) {
  new TTMyframe().launchframe();
  
 }
}


class TTMyframe extends frame {
 
 TextField num1, num2, num3;

 public void launchframe() {
  num1 = new TextField(10);
  num2 = new TextField(15);
  num3 = new TextField(15);
  Label lblPlus = new Label("+");
  Button btnEqual = new Button("=");
  btnEqual.addActionListener(new MyMonitorbtnEqual(this));
  setLayout(new FlowLayout());
  add(num1);
  add(lblPlus);
  add(num2);
  add(btnEqual);
  add(num3);
  pack();
  setVisible(true);
 }
}


class MyMonitorbtnEqual implements ActionListener {
 TTMyframe ttmf = null;

 public MyMonitorbtnEqual(TTMyframe ttmf) {
  this.ttmf = ttmf;
 }

 public void actionPerformed(ActionEvent e) {
  int n1 = Integer.parseInt(ttmf.num1.getText());
  int n2 = Integer.parseInt(ttmf.num2.getText());
  ttmf.num3.setText("" + (n1 + n2));
  ttmf.num1.setText("");
  ttmf.num2.setText("");
 }
}

运行结果如下:

三、内部类

内部类的使用范例:

package cn.javastudy.summary;

import java.awt.*;
import java.awt.event.*;

public class TestMath3 {

 public static void main(String args[]) {
  new MyMathframe().launchframe();
 }
}

class MyMathframe extends frame {
 TextField num1, num2, num3;

 public void launchframe() {
  num1 = new TextField(10);
  num2 = new TextField(15);
  num3 = new TextField(15);
  Label lblPlus = new Label("+");
  Button btnEqual = new Button("=");
  btnEqual.addActionListener(new MyMonitor());
  setLayout(new FlowLayout());
  add(num1);
  add(lblPlus);
  add(num2);
  add(btnEqual);
  add(num3);
  pack();
  setVisible(true);
 }

 
 
 private class MyMonitor implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   int n1 = Integer.parseInt(num1.getText());
   int n2 = Integer.parseInt(num2.getText());
   num3.setText("" + (n1 + n2));
   num1.setText("");
   num2.setText("");
  }
 }
}

内部类带来的巨大好处是:

  • 可以很方便地访问外部类定义的成员变量和方法
  • 当某一个类不需要其他类访问的时候就把这个类声明为内部类。

四、Graphics 类

测试代码:

package cn.javastudy.summary;

import java.awt.*;
public class TestPaint{
 public static void main(String args[]){
  new MyPaint().launchframe();
  
 }
}

class MyPaint extends frame{
 public void launchframe(){
  setBounds(200,200,640,480);
  setVisible(true);
 }
 
 public void paint(Graphics g){
  
  
  g.setColor(Color.red);
  g.fillOval(100,100,100,100);
  g.setColor(Color.green);
  g.fillRect(150,200,200,200);
  
  Color c = g.getColor();
  g.setColor(c);
 }
}

运行结果:

五、鼠标事件适配器

测试代码:

package cn.galc.test;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapter{
 public static void main(String args[]) {
 new Myframe("drawing...");
 }
}

class Myframe extends frame {
 ArrayList points = null;
 Myframe(String s) {
 super(s);
 points = new ArrayList(); 
 setLayout(null);
 setBounds(300,300,400,300); 
 this.setBackground(new Color(204,204,255));
 setVisible(true);
 this.addMouseListener(new Monitor());
 }
 
 public void paint(Graphics g) {
 Iterator i = points.iterator();
 while(i.hasNext()){
  Point p = (Point)i.next();
  g.setColor(Color.BLUE);
  g.fillOval(p.x,p.y,10,10);
  
 }
 }
 
 public void addPoint(Point p){
 points.add(p);
 }
}

class Monitor extends MouseAdapter {
 public void mousePressed(MouseEvent e) {
 Myframe f = (Myframe)e.getSource();
 f.addPoint(new Point(e.getX(),e.getY()));
 f.repaint();
 }
}

六、window事件

测试代码:

package cn.galc.test;

import java.awt.*;
import java.awt.event.*;
public class TestWindowClose{
 public static void main(String args[]){
 new Windowframe("关闭Windowframe");
 }
}

class Windowframe extends frame{
 public Windowframe(String s){
 super(s);
 setBounds(200,200,400,300);
 setLayout(null);
 setBackground(new Color(204,204,255));
 setVisible(true);
 this.addWindowListener(new WindowMonitor());

 
 this.addWindowListener(
 
  new WindowAdapter(){
  public void windowClosing(WindowEvent e){
   setVisible(false);
   System.exit(-1);
  }
  }
 );
 }
 
 
 class WindowMonitor extends WindowAdapter{
 

 public void windowClosing(WindowEvent e){
  setVisible(false);
  System.exit(0);
  }
 }
}

七、键盘响应事件——KeyEvent

测试代码:

package cn.galc.test;

import java.awt.*;
import java.awt.event.*;
public class TestKeyEvent{
 public static void main(String args[]){
 new Keyframe("键盘响应事件");
 }
}

class Keyframe extends frame{
 public Keyframe(String s){
  super(s);
  setBounds(200,200,400,300);
  setLayout(null);
  setVisible(true);
  addKeyListener(new KeyMonitor());
 }
  
 class KeyMonitor extends KeyAdapter{
 public void keyPressed(KeyEvent e){
  int keycode = e.getKeyCode();
  
  
  if(keycode == KeyEvent.VK_UP){
   System.out.println("你按的是up键");
   }
  }
 }
}

通过这篇文章和大家一起学习了GUI编程,希望大家对GUI编程有了更全面的认识,关于GUI编程远不止这些,还需要大家继续学习。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号