Java程序设计(高级及专题)- GUI,java项目经验面试

}

例如2:

import java.awt.*;

public class test {

public static void main(String args[]) {

MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);

MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);

MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);

MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);

}

}

class MyFrame extends Frame{

static int id = 0;

MyFrame(int x,int y,int w,int h,Color color){

super("MyFrame " + (++id));

setBackground(color);

setLayout(null);

setBounds(x,y,w,h);

setVisible(true);

}

}

Panel

===================================================================

  • Panel对象可以看成可以容纳Component的空间。

  • Panel对象可以拥有自己的布局管理器。

  • Panel类拥有从父类继承来的

在这里插入图片描述例如1:

import java.awt.*;

public class TestPanel {

public static void main(String args[]) {

Frame f = new Frame(“Java Frame with Panel”);

Panel p = new Panel(null);

f.setLayout(null);

f.setBounds(300,300,500,500);

f.setBackground(new Color(0,0,102));

p.setBounds(50,50,400,400);

p.setBackground(new Color(204,204,255));

f.add§;

f.setVisible(true);

}

}

例如2:

import java.awt.*;

public class test{

public static void main( String args[]) {

new MyFrame2(“MyFrameWithPanel”,300,300,400,300);

}

}

class MyFrame2 extends Frame{

private Panel p1,p2,p3,p4;

MyFrame2(String s,int x,int y,int w,int h){

super(s);

setLayout(null);

p1 = new Panel(null); p2 = new Panel(null);

p3 = new Panel(null); p4 = new Panel(null);

p1.setBounds(0,0,w/2,h/2);

p2.setBounds(0,h/2,w/2,h/2);

p3.setBounds(w/2,0,w/2,h/2);

p4.setBounds(w/2,h/2,w/2,h/2);

p1.setBackground(Color.BLUE);

p2.setBackground(Color.GREEN);

p3.setBackground(Color.YELLOW);

p4.setBackground(Color.MAGENTA);

add(p1);add(p2);add(p3);add(p4);

setBounds(x,y,w,h);

setVisible(true);

}

}

事件监听

==================================================================

在这里插入图片描述

Button事件监听

例如:

import java.awt.*;

import java.awt.event.*;

public class test {

public static void main(String args[]) {

Frame f = new Frame(“Test”);

Button b

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

= new Button(“Press Me!”);

Monitor bh = new Monitor();

b.addActionListener(bh);

f.add(b,BorderLayout.CENTER);

f.pack(); //调整此窗口大小,以适应其组件的首先大小和布局

f.setVisible(true);

}

}

class Monitor implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.println(“a button has been pressed”);

}

}

TextField类

========================================================================

java.awt.TextFieldl类用来创建文本框对象。

TextField有如下常用方法:

在这里插入图片描述TextField事件监听

  • TextField对象可能发生Action(光标在文本框内敲回车)事件。与该事件对应的事件类是 java.awt.event.ActionListener接口的类的对象。ActionListener接口定义有方法: public void actionPerformed(ActionEvent e)

  • 实现该接口的类主要在该方法中添加处理事件(Action)的语句。

  • 使用 addActionListener(ActionListener I) 方法为 TextField 对象注册一个 ActionListener 对象,当 TextField 对象发生 Action 时,会生成一个 ActionEvent 对象,该对象作为参数传递给 ActionListener 对象的 actionPerformer 方法在方法中可以获取该对象的信息,并做相应的处理。

例如:

import java.awt.*;

import java.awt.event.*;

public class TFPassword {

/**

  • @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new TFFrame2();

}

}

class TFFrame2 extends Frame

{

TFFrame2()

{

TextField tf = new TextField();

add(tf);

tf.addActionListener(new TFActionListener2());

tf.setEchoChar(’*’);

pack();

setVisible(true);

}

}

class TFActionListener2 implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

TextField tf = (TextField)e.getSource();

System.out.println(tf.getText());

tf.setText("");

}

}

内部类

=================================================================

好处:

  • 可以方便的访问包装类的成员。

  • 可以更清楚的组织逻辑,防止不应该被其他类访问的类进行访问。

何时使用:

  • 该类不允许或不需要其他类访问时。

Graphics类 Paint方法

  • 每个 Component 都有一个 paint(Graphics g)用于实现绘图目的,每次重画该 Component 时都自动调用 paint 方法。

  • Graphics 类中提供了许多绘图方法,具体查询API。

例如:

import java.awt.*;

public class TestPaint {

public static void main(String[] args) {

new PaintFrame().launchFrame();

}

}

class PaintFrame extends Frame {

public void launchFrame() {

setBounds(200,200,640,480);

setVisible(true);

}

public void paint(Graphics g) {

Color c = g.getColor();

g.setColor(Color.red);

g.fillOval(50, 50, 30, 30);

g.setColor(Color.green);

g.fillRect(80,80,40,40);

g.setColor©;

}

}

鼠标事件适配器

=====================================================================

  • 抽象类 java.awt.event.MouseAdapter 实现了 MouseListener 接口,可以使用其子类作为 MouseEvent接口,可以使用其子类作为 MouseEvent 的监听器,只要重写其相应的方法即可。

  • 对于其他的监听器,也有对应的适配器。

  • 使用适配器可以避免监听器类定义没有必要的空方法。

  • GUI/MyMouseAdapter.java 鼠标适配器

  • repaint-update()-paint();

例如:

import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MouseAndKeyEvent {

private Frame f;

private Button but;

private TextField tf;

public MouseAndKeyEvent() {

init();

}

private void init(){

f=new Frame(“me frame”);

f.setBounds(300, 200, 600, 500);

f.setLayout(new FlowLayout());

tf=new TextField(20);

but=new Button(“my Botton”);

f.add(tf);

f.add(but);

event();

f.setVisible(true);

}

private void event(){

f.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

// TODO Auto-generated method stub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值