【转自】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);

}

}

执行效果:

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

}

}

运行结果:

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

}

}

执行结果:

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

}

}

最新文章

  1. 使用Sublime Text 直接运行Quick-cocos2d-x 项目
  2. 通过WriteProcessMemory改写进程的内存
  3. xen虚拟机(Centos6.6)的创建和扩容
  4. 关于TS流的解析
  5. C# 中的关键字整理
  6. Redis实现分布式锁的正确姿势
  7. java -jar参数携带问题
  8. PAT 1120 Friend Numbers
  9. 201621123002《Java程序设计》第十周学习总结
  10. layui 弹出框改变按钮颜色样式 自定义皮肤
  11. 【学亮IT手记】Ajax跨域问题精讲--jQuery解决跨域操作
  12. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch
  13. View.requestLayout
  14. STL容器(C11)--unordered_map用法
  15. Spring学习笔记1——IOC: 尽量使用注解以及java代码
  16. 从nsq中学习如何优雅的退出go 网络程序
  17. .Net Core EF Core之Sqlite使用及部署
  18. windows 批处理设置环境变量
  19. 【Linux】YUM源搭建
  20. 动态加载css、js引用

热门文章

  1. 寻找[nginx] 由Lua 粘合的Nginx生态环境-- agentzh
  2. C# 获取今天,昨天,上周,下周,上月,下月等等一些日期格式
  3. CitrixSmartAuditor安装报错解决方法
  4. Linux对包管理阐述
  5. HDUOJ---2546 饭卡
  6. 【LeetCode】24. Swap Nodes in Pairs (3 solutions)
  7. 【LeetCode】35. Search Insert Position (2 solutions)
  8. 《JAVA与模式》之状态模式
  9. 安卓解析 json 4种格式 全解析
  10. Solutions for the Maximum Subsequence Sum Problem