0
点赞
收藏
分享

微信扫一扫

Java程序设计(高级及专题)- GUI

木匠0819 2022-04-29 阅读 51
  • 不指定布局方式,默认 满屏覆盖,在添加一个 也是 满屏覆盖 
    
  • GridLayout (网格布局管理器)

  • 规则的矩阵 
    
  • CardLayout (卡片布局管理器)

  • 选项卡 
    
  • GridBagLayout(网格包布局管理器)

  • 非规则的矩阵

  • 事件监听机制组成 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】

  • 事件源:

  • 事件:Event

  • 监听器:Listener

  • 时间处理:(引发事件后处理方式)

  • 事件源:就是awt包或者swing包中的那些图像界面组件.

  • 事件:每个事件源都有自己特定的对应时间和共性时间.

  • 监听器:可以出发某一个事件的动作都已经封装到监听器中.

*/

public class test{

public static void main( String args[]) {

Frame f = new Frame(“My First Test”);

f.setLocation(300, 300);

f.setSize( 170,100);

f.setBackground( Color.blue);

f.setResizable(false);

f.setVisible( true);

}

}

例如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 = 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;

举报

相关推荐

0 条评论