Java GUI编程
Java GUI编程
李茂冉 发表于1年前
Java GUI编程
  • 发表于 1年前
  • 阅读 8
  • 收藏 0
  • 点赞 2
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

##AWT

###awt(abstract window toolkit)

  • 包括了很多类和接口,用于java application的GUI编程
  • GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现
  • 使用awt所涉及的类一般在java.awt包及其子包中
  • Container和Component是awt中的两个核心类

###Frame

frame是window的子类,由Frame或其子类创建的对象为一个窗体。

Frame的常用构造方法 Frame() Frame(String s) 创建标题栏为字符串s的窗口

setBounds(int x,int y,int width,int height); 设置窗体位置和大小,x,y是左上角坐标

setSize(int width,int height); 设置窗体的位置,x,yshirt左上角坐标

setLocation(int x,int y) 设置窗体的大小,width和height分别是宽度和高度

setViseble(boolean b) 设置是否可见

setTitle(String name) String getTitle()

setResizable(boolean b) 设置是否可以调整大小

##java窗口的事件

void windowActivated(WindowEvent e) 将 Window 设置为活动 Window 时调用。

void windowClosed(WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。

void windowClosing(WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。

void windowDeactivated(WindowEvent e) 当 Window 不再是活动 Window 时调用。

void windowDeiconified(WindowEvent e) 窗口从最小化状态变为正常状态时调用。

void windowIconified(WindowEvent e) 窗口从正常状态变为最小化状态时调用。

void windowOpened(WindowEvent e) 窗口首次变为可见时调用。

##TextArea

setEditable(false); //只读属性

##匿名类关闭java窗口

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

public class FrameClose
{
	public static void main(String []args){
		new MyFrame("可以关闭窗口了!");
	}

}
class MyFrame extends Frame
{
	public MyFrame(String s){
		super(s);
		setLayout(null);
		setBounds(300,300,400,300);
		this.setBackground(new Color(204,204,255));
		setVisible(true);
		/*
		//用内部类实现
		this.addWindowListener(new MyWindowMonitor());
		*/
		//用局部类,即匿名类实现
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				javax.swing.JOptionPane.showMessageDialog(null,"您把我关闭了!","提示",0);
				System.exit(0);
			}
		});

	}

	//内部类实现
	class MyWindowMonitor extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			setVisible(false);
			System.exit(0);
		}
	}
}

##文本框TextFiedld

  • TextField文本框输入
  • setEchoChar('');设置显示的内容为,即为*来屏蔽输入的内容

代码示例:


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

public class TextFieldTest{
	public static void main(String[]args){
		new TFFrame();	
	}	
}
class TFFrame extends Frame{
	public TFFrame(){
		TextField tf=new TextField();
		add(tf);
		tf.addActionListener(new Monitor());
		tf.setEchoChar('*');
		pack();
		setVisible(true);
	}	
}
class Monitor implements ActionListener {
	public void actionPerformed(ActionEvent e){
		TextField tf=(TextField)e.getSource();
		System.out.println(tf.getText());	
	}	
}

##事件

  • 使用java.awt.event.*;包的内容
  • 添加事件/绑定事件:addActionListener(//实现ActionListener接口的类的对象);
  • 实现ActionListener接口的public void actionPerformed(ActionEvent e){}方法

代码示例:

import java.awt.*;

public class EventTest{
	public static void main(String[]args){
		Frame f=new Frame("事件练习!");
		f.setBounds(500,500,500,500);
		f.setLayout(new FlowLayout());
		
		//添加文本框
		TextArea t=new TextArea();
		t.setBounds(100,100,300,100);
		t.setVisible(true);		
		f.add(t);
		//添加按钮
		Button b=new Button("Press Me!");
		MyEvent e=new MyEvent(t);
		
		b.addActionListener(e);
		
		f.add(b);
		f.setVisible(true);	
	}
} 

//事件
class MyEvent implements java.awt.event.ActionListener{
	private TextArea t;
	public MyEvent(){}
	public MyEvent(TextArea t){
		this.t=t;	
	}
	public void actionPerformed(java.awt.event.ActionEvent e){
		t.setText(t.getText()+"\n你点击了我,我痛啊!");
		System.out.println("你点击了我!");	
	}	
}

##如何区分同一事件的绑定

  • 加入两个button同时绑定了一个监听器,那么我们怎么区分它们?

代码示例:

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

public class MyFirstEventTest{
	public static void main(String[]args){
		Frame f=new Frame("事件练习");
		f.setBounds(500,500,500,500);
		//添加button
		Button b1=new Button("上一步");
		Button b2=new Button("下一步");
		//添加TextArea
		TextArea t=new TextArea();
		t.setBounds(100,100,200,200);
		f.add(t);
		Monitor m=new Monitor(t);
		b1.setActionCommand("Back!");
		b2.setActionCommand("Next!");
		b1.addActionListener(m);
		b2.addActionListener(m);
		f.add(b1);
		f.add(b2);
		f.setLayout(new FlowLayout());
		f.setVisible(true);		
	}	
}
class Monitor implements ActionListener{
	private TextArea t;
	public Monitor(TextArea t){
		this.t=t;
	}
	public void actionPerformed(ActionEvent e){
		t.setText(t.getText()+"\t"+e.getActionCommand()+"\n");
	}	
}

##如何关闭java显示的窗口

  • 调用并添加addWindowListener()方法!
  • 实现WindowAdapter的windowClosing方法

代码示例:

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

public class FrameClose
{
	public static void main(String []args){
		new MyFrame("可以关闭窗口了!");
	}

}
class MyFrame extends Frame
{
	public MyFrame(String s){
		super(s);
		setLayout(null);
		setBounds(300,300,400,300);
		this.setBackground(new Color(204,204,255));
		setVisible(true);
		this.addWindowListener(new MyWindowMonitor());

	}
	class MyWindowMonitor extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			setVisible(false);
			System.exit(0);
		}
	}
}
共有 人打赏支持
粉丝 6
博文 102
码字总数 59009
×
李茂冉
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: