码迷,mamicode.com
首页 > 其他好文 > 详细

GUI编程

时间:2019-09-04 21:49:41      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:integer   open   round   大小   echo   name   inf   计算器   bsp   

 

AWT
?AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application
的GUI (Grapbics User Interface图形用户界面)编程。
?GUI的各种元素(如: 窗口,按钮,文本框等)由Java类来实现。
?使用AWT所涉 及的类-般在java.awt包及其子包中。
?Container和Component是 AWT中的两个核心类。

技术图片

 

 

 

 

 Component & Container
Java的图形用户界面的最基本组成部分是Component,Component类及其子类的对象
用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,-一个按钮,
一个标签等。
?一般的Component对 象不能独立地显示出来,必须将”放在"某-的Container对象中才可
  以显示出来。
?Container是Component子类,Container子 类对象可以“容纳”别的Component对象。
?Container对象可使用方法add(..)向其中添加其他Component对象。
?Containter 是Component的子类,因此Containter对象也可以被当作Component对象添
加到其他Container对象中。
?有 两种常用的Containter:
Window:其对象表示自由停泊的顶级窗口
Panel:其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其
它Containner中(如Window或Applet)

技术图片

 

package com.shuai01;

import java.awt.*;

public class TestFrameDemo01 {
    public static void main(String[] args) {
        myFrame m1 = new myFrame(100,100,200,200,Color.yellow);
        myFrame m2 = new myFrame(300,100,200,200,Color.green);
        myFrame m3 = new myFrame(100,300,200,200,Color.red);
        myFrame m4 = new myFrame(300,300,200,200,Color.orange);

    }
}

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);
    }
}

 

 技术图片

 

 

 

程序1

 

package com.shuai01;

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(100,220,100));
        p.setBounds(50,50,400,400);
        p.setBackground(new Color(204,204,255));
        f.add(p);
        f.setVisible(true);
    }
}

 

程序2

package com.shuai01;

import java.awt.*;

public class TestmultiPanel {
    public static void main(String[] args) {
        MyFrame2 m = new MyFrame2("java frame",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.orange);
        p4.setBackground(Color.cyan);

        add(p1);add(p2);add(p3);add(p4);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

 

 


 

布局管理器类:

◆Java语言中,提供了布局管理器类的对象可以管理
◆管 理Component在Container中的布局,不必直接设置
Component位置和大小。
◆每 个Container都有一个布局管理器对象,当容器需要对某个组件
进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用
Container的setLayout方法改变其布局管理器对象。
◎Awt提供了5种布局管理器类:
◆FlowLayaout
◆BorderLayout
◆GridlLayou
◆CardLayout
◆GridBagLayout
技术图片

 

 

 

技术图片

 

 

 

1mport java.aut. *:
public class TestFlowLayout (
public static void main(String args[]) {
Frane I。new Frane ("F lou Layout") ;
Button button1 neu Button("Ok") ;
Button button2 = new Button("Open") :
Button button3 = new Button("Close") :
f.setLayout (new FlowLayout (FlowLayout .LEFT)) ;
f. add (button1) ;
f. add (button2) ;
f. add (button3) ;
f.setSize (100, 100) ;
f.setVisible(true) ;

 


 

 

技术图片

 

 

 

技术图片

 

 

 

package com.shuai01;

import java.awt.*;

public class TestBorderLayout {
    public static void main(String[] args) {
        Frame f;
        f = new Frame("Border Layout");
        Button bn = new Button("BN");
        Button bs = new Button("BS");
        Button bw = new Button("BW");
        Button be = new Button("BE");
        Button bc = new Button("BC");

        f.add(bn,BorderLayout.NORTH);
        f.add(bs,BorderLayout.SOUTH);
        f.add(bw, BorderLayout.WEST);
        f.add(be,BorderLayout.EAST);
        f.add(bc,BorderLayout.CENTER);

        f.setSize(200,200);
        f.setVisible(true);
    }
}

 

 


 

 

技术图片

 

 

 

package com.shuai01;

import java.awt.*;

public class TestBorderLayout {
    public static void main(String[] args) {
        Frame f;
        f = new Frame("GridLayout");
        Button bn = new Button("BN");
        Button bs = new Button("BS");
        Button bw = new Button("BW");
        Button be = new Button("BE");
        Button bc = new Button("BC");

        f.setLayout(new GridLayout(3,4));

        f.add(bn);
        f.add(bs);
        f.add(bw);
        f.add(be);
        f.add(bc);

        f.pack();
        f.setVisible(true);
    }
}

 

 

技术图片

 

 

 

addActionListener?(ActionListener l)
添加指定的动作侦听器以从此按钮接收动作事件。

 

技术图片

 

 

package com.shuai01;

import java.awt.*;

import java.awt.event.*;

public class TestActionEvent2 {
    public static void main(String args[]) {
        Frame f = new Frame("Teat");
        Button b1 = new Button("Start");
        Button b2 = new Button("Stop");
        Monitor2 bh = new Monitor2();

        b1.addActionListener (bh);

        b2.addActionListener (bh);
        b2.setActionCommand("game over");
        f.add(b1, "North");
        f.add(b2, "Center");
        f.pack();
        f.setVisible(true);
    }
}
class Monitor2 implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.out.println("a button has been pressed,"+
            "the relativeinfo 18:\n "+ e.getActionCommand()) ;

        }
}

 

技术图片

 

 

技术图片

 

 

public void setEchoChar?(char c)
设置此文本字段的回音字符

 技术图片

 

 持有对方引用

计算机加法

技术图片

 

 代码如下

package com.shuai01;


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TFmath {
    public static void main(String[] args) {
        TFFrame t1 = new TFFrame();
        t1.setTitle("计算器");
        t1.launchFrame();

    }
}

class TFFrame extends Frame {
    TextField num1, num2, num3;

    public void launchFrame() {
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(15);
        Label lblPlus = new Label("+");
        Button btnEqual = new Button("=");

//        btnEqual.addActionListener(new myMonnitor(num1, num2, num3));
        btnEqual.addActionListener(new myMonnitor(this));
        setLayout(new FlowLayout());
        add(num1);
        add(lblPlus);
        add(num2);
        add(btnEqual);
        add(num3);
        pack();
        setVisible(true);


    }
}

class myMonnitor implements ActionListener {
    /*
    TextField num1, num2, num3;

    public myMonnitor(TextField num1, TextField num2, TextField num3) {
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
    }
    */
    //持有对方的引用
    TFFrame tf = null;
    public myMonnitor(TFFrame tf) {
        this.tf = tf;
    }

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

 

 

内部类改进后

package com.shuai01;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TFmathDemo01 {
    public static void main(String[] args) {

        new TFFrame().lanuchFrame();
    }
}

class TFFrame extends Frame {
    TextField num1, num2, num3;

    public void lanuchFrame() {
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(15);
        Label lblplus = new Label("+");
        Button equals = new Button("=");
        equals.addActionListener(new myMonitor());
        setLayout(new FlowLayout());
        add(num1);
        add(lblplus);
        add(num2);
        add(equals);
        add(num3);
        pack();
        setVisible(true);
    }

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

        }
    }
}

 

GUI编程

标签:integer   open   round   大小   echo   name   inf   计算器   bsp   

原文地址:https://www.cnblogs.com/lsswudi/p/11461294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!