【转】java图形界面设计(AWT)

时间:2023-02-26 07:32:16

【转自】http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html

1.       基本的java Frame操作。

Java的图形界面的类主要包括AWT和Swing。在AWT中图形元素的父类为Component。

继承关系如下:Component->Container->Window->Frame->JFrame。(注意:Swing对AWT进行了扩展)。

下面给出一个简单的java图形程序:

package com.guan.visualTest.frameTest;

import java.awt.Button;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class MainFrame {

public static void main(String[] args)

{

//创建frame

JFrame frame = new JFrame("welcome!!");

//调整frame的大小和初始位置

frame.setSize(400, 400);

frame.setLocation(100, 100);

//新建5个Button

Button button1 = new Button("hello1");

Button button2 = new Button("hello2");

Button button3 = new Button("hello3");

Button button4 = new Button("hello4");

Button button5 = new Button("hello5");

//将5个Button添加到frame中

frame.add(button1,"East");

frame.add(button2,"West");

frame.add(button3,"South");

frame.add(button4,"Center");

frame.add(button5,"North");

//增加窗口监听事件,使用内部类方法,并用监听器的默认适配器

frame.addWindowListener(new WindowAdapter(){

//重写窗口关闭事件

@Override

public void windowClosing(WindowEvent arg0) {

System.exit(0);

}

});

//显示窗体

frame.setVisible(true);

}

}

执行效果:

【转】java图形界面设计(AWT)

2.       AWT的布局管理器

AWT中主要有四种布局管理器:FlowLayout、GridLayout、BorderLayout和CardLayout。

下面给出这四种布局管理器的源码:

package com.guan.visualTest.frameTest;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.CardLayout;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class YourFrame extends Frame{

private static final long serialVersionUID = 1L;

Panel borderLayoutPanel;

Panel cardLayoutPanel;

Panel flowLayoutPanel;

Panel gridLayoutPanel;

private void generateGridLayoutPanel() {

gridLayoutPanel = new Panel();

gridLayoutPanel.setLayout(new GridLayout(2,2));

Button button1 = new Button("button1");

Button button2 = new Button("button2");

Button button3 = new Button("button3");

Button button4 = new Button("button4");

gridLayoutPanel.add(button1);

gridLayoutPanel.add(button2);

gridLayoutPanel.add(button3);

gridLayoutPanel.add(button4);

}

private void generateFlowLayoutPanel() {

flowLayoutPanel = new Panel();

flowLayoutPanel.setLayout(new FlowLayout());

Button button1 = new Button("button1");

Button button2 = new Button("button2");

Button button3 = new Button("button3");

Button button4 = new Button("button4");

Button button5 = new Button("button5");

button1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

((Button)e.getSource()).setLabel("welcome ");

}

});

flowLayoutPanel.add(button1);

flowLayoutPanel.add(button2);

flowLayoutPanel.add(button3);

flowLayoutPanel.add(button4);

flowLayoutPanel.add(button5);

}

private void generateBorderLayoutPanel() {

borderLayoutPanel = new Panel();

borderLayoutPanel.setLayout(new BorderLayout());

Button button1 = new Button("South");

Button button2 = new Button("West");

Button button3 = new Button("East");

Button button4 = new Button("North");

Button button5 = new Button("Center");

borderLayoutPanel.add(button1,BorderLayout.SOUTH);

borderLayoutPanel.add(button2,BorderLayout.WEST);

borderLayoutPanel.add(button3,BorderLayout.EAST);

borderLayoutPanel.add(button4,BorderLayout.NORTH);

borderLayoutPanel.add(button5,BorderLayout.CENTER);

}

private void genrateCardLayoutPanel() {

cardLayoutPanel = new Panel();

final CardLayout cl = new CardLayout();

cardLayoutPanel.setLayout(cl);

Button button1 = new Button("black");

Button button2 = new Button("red");

ActionListener al = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

cl.next(cardLayoutPanel);

}

};

button1.addActionListener(al);

button2.addActionListener(al);

cardLayoutPanel.add(button1,"1");

cardLayoutPanel.add(button2,"2");

}

public YourFrame(String panelName) {

super("panelName");

generateBorderLayoutPanel();

generateFlowLayoutPanel();

generateGridLayoutPanel();

genrateCardLayoutPanel();

setLayout(new GridLayout(2,2));

add(borderLayoutPanel);

add(flowLayoutPanel);

add(gridLayoutPanel);

add(cardLayoutPanel);

setSize(800, 800);

setLocation(100,100);

addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent arg0) {

System.exit(0);

}

});

}

public static void main(String[] args) {

YourFrame yourFrame = new YourFrame("welcome");

yourFrame.setVisible(true);

}

}

运行结果:

【转】java图形界面设计(AWT)

3.       菜单栏的实现:

菜单栏关键的类包括MenuBar、Menu和MenuItem。下面给出测试代码:

package com.guan.visualTest.frameTest;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

public class MenuFrame {

public static void main(String[] args) {

final Frame frame = new Frame();

frame.setSize(800,800);

frame.setLocation(100,100);

frame.addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

final TextArea ta = new TextArea();

frame.add(ta);

//创建菜单栏

MenuBar mb = new MenuBar();

//创建菜单

Menu file = new Menu("File");

Menu edit = new Menu("Edit");

//创建菜单项

MenuItem mi1 = new MenuItem("Open");

//添加打开文件功能响应

mi1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

FileDialog fd = new FileDialog(frame,"打开文件",FileDialog.LOAD);

fd.setVisible(true);

String fileName = fd.getDirectory()+fd.getFile();

if(fileName != null)

{

try {

FileInputStream fis = new FileInputStream(fileName);

byte[] buf = new byte[10*1024];

try {

int len = fis.read(buf);

ta.append(new String(buf,0,len));

fis.close();

catch (IOException e1) {

e1.printStackTrace();

}

catch (FileNotFoundException e1) {

e1.printStackTrace();

}

}

}

});

MenuItem mi2 = new MenuItem("Save");

MenuItem mi3 = new MenuItem("Other Save");

MenuItem mi4 = new MenuItem("Close");

//添加 关闭响应

mi4.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

System.exit(0);

}

});

MenuItem mi5 = new MenuItem("Cope");

MenuItem mi6 = new MenuItem("Paste");

file.add(mi1);

file.add(mi2);

file.add(mi3);

file.add(mi4);

edit.add(mi5);

edit.add(mi6);

mb.add(file);

mb.add(edit);

frame.setMenuBar(mb);

frame.setVisible(true);

}

}

执行结果:

【转】java图形界面设计(AWT)

4.       最后Swing的简单测试

package com.guan.visualTest.frameTest;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

public class SwingFrame {

public static void main(String[] args) {

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JButton button = new JButton("ok");

frame.getContentPane().add(button,BorderLayout.WEST);

frame.setSize(800,800);

frame.setLocation(100, 100);

frame.setVisible(true);

}

}

【转】java图形界面设计(AWT)的更多相关文章

  1. java图形界面设计

    1.       基本的java Frame操作. Java的图形界面的类主要包括AWT和Swing.在AWT中图形元素的父类为Component. 继承关系如下:Component->Cont ...

  2. Java图形界面设计——substance皮肤

    http://jianweili007-163-com.iteye.com/blog/1141358 ————————————————————————————————————————————————— ...

  3. Java图形界面学习---------简易登录界面

    /** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...

  4. Java 图形界面开发--图文并茂建立学生管理系统

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...

  5. Java图形界面GUI

    Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...

  6. MATLAB图形界面设计(下)

    文章参考Blue Mountain https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4307777.html 一.菜单设计 1.建立菜单项 (1)建 ...

  7. Sprint 2 : ios图形界面设计与代码整合

    这周我们主要focus在personal photo experience 项目的ios图形界面设计与代码整合工作上. 工作进度: 1. 图形界面设计方面:兆阳和敏龙基本已经将ios手机客户端的雏形界 ...

  8. python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值

    Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...

  9. Java图形界面实战案例——实现打字母游戏

    实现打字母的游戏 这次这个案例能够说是头几次所讲的内容的一个技术汇总,主要是 运用了几大块的知识.我们先来定义一下案例的背景:在一个300*400的窗口上.有10个随机产生的字母下落,在键盘上敲击字母 ...

随机推荐

  1. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...

  2. java 复用类的三种方式区别 组合,继承,代理的区别

    1. 组合 : 只需在新类中产生现有类的对象 .(is - a 有一个) 新类是由现有类的对象组成. (引用初始化与作用域?) 2. 继承 : 按照现有类的类型来创造新类. (has - a 有一个) ...

  3. C编译&colon; 使用gdb调试

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! gdb是the GNU Debugger的简称.它是一款UNIX平台的调试器(de ...

  4. C语言&lowbar;数字排列顺序

    #include <stdio.h> #include <stdlib.h> #define LENGTH 8 void main() { , , , , , , , }; ; ...

  5. Node json

    //1:加载相关模块 http express mysqlconst http = require("http");const mysql = require("mysq ...

  6. vue&period;js路由vue-router

    学习网址:https://segmentfault.com/blog/vueroad 转载至:https://segmentfault.com/a/1190000009350679#articleHe ...

  7. &lbrack;转&rsqb;浅谈利用SQLite存储离散瓦片的思路和实现方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在多个项目中涉及到互联网地图的内网显示,通过自制工具完成了互联 ...

  8. jsp弹出新窗口代码

    1.最基本的弹出窗口代码其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open (page.html) ...

  9. python基础之socket编程&lpar;二&rpar;

    ssh远程执行命令: 思路分析: 客户端给服务端发送命令,服务端返回一个输出结果传给客户端. #coding:utf-8 #买手机 import socket import struct import ...

  10. springboot集成巨杉数据库

    springboot倾向于约定优于配置,所以大大简化了搭建项目的流程,包括各种数据源的配置,接下来就和大家分享下最近用到的巨杉数据源连接池的配置 1.现在配置文件中定义巨杉连接池的各种连接信息,至于每 ...