java图形界面设计
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); } }
转自:http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html
java图形界面设计的更多相关文章
- 【转】java图形界面设计(AWT)
[转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1. 基本的java Frame操作. Java的图形界面的类主要包括AW ...
- Java图形界面设计——substance皮肤
http://jianweili007-163-com.iteye.com/blog/1141358 ————————————————————————————————————————————————— ...
- Java图形界面学习---------简易登录界面
/** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...
- Java图形界面GUI
Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...
- MATLAB图形界面设计(下)
文章参考Blue Mountain https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4307777.html 一.菜单设计 1.建立菜单项 (1)建 ...
- Sprint 2 : ios图形界面设计与代码整合
这周我们主要focus在personal photo experience 项目的ios图形界面设计与代码整合工作上. 工作进度: 1. 图形界面设计方面:兆阳和敏龙基本已经将ios手机客户端的雏形界 ...
- python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值
Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...
- Java第5次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
随机推荐
- VC++动态链接库(DLL)编程深入浅出(二)
好,让我们正式进入动态链接库的世界,先来看看最一般的DLL,即非MFC DLL 上节给大家介绍了静态链接库与库的调试与查看,本节主要介绍非MFC DLL. 4.非MFC DLL 4.1一个简单的DLL ...
- 粗略。。Java项目设计模式之笔记----studying
设计模式 设计模式:解决这个问题的一种行之有效的思想. 设计模式:用于解决特定环境下.反复出现的特定问题的解决方式. 设计模式学习概述 ★ 为什么要学习设计模式 1.设计模式都是一些相对优秀的解决方式 ...
- F - 概率(经典问题)
Description Sometimes some mathematical results are hard to believe. One of the common problems is t ...
- iOS的URLScheme
一直都有接触要设置app的url scheme,从最早的facebook開始. 当时的理解是SSO用的,当授权成功之后,facebook app或者safari能够利用给定的url scheme来回调 ...
- scramble-string——两个字符串经过树化并旋转后是否一致、递归、动态规划
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...
- Node.js 抓取电影天堂新上电影节目单及ftp链接
代码地址如下:http://www.demodashi.com/demo/12368.html 1 概述 本实例主要使用Node.js去抓取电影的节目单,方便大家使用下载. 2 node packag ...
- ORA-01591错误的原因和处理方法
http://blog.csdn.net/tclcaojun/article/details/6777022错误代码:ORA-01591 错误原因:使用了分布式事务,造成这个问题的原因很多时候都是由于 ...
- 提升Web性能的技巧
1. 采用反向代理服务器(Reverse Proxy Server)来对应用进行加速和保护 其作用主要在以下三方面: 负载平衡 – 运行在反向代理服务器上的负载平衡器会在不同的不服务器 间进行传输 ...
- Gson把对象转成json格式的字符串
近期在做一个java web service项目,须要用到jason,本人对java不是特别精通,于是開始搜索一些java平台的json类库. 发现了google的gson.由于之前对于protoco ...
- git stash 保存当前工作状态
1. git stash 暂存当前工作状态 2. git stash list 查看暂存列表 3. git stash save 'title' 暂存工作状态并添加说明 4. git stash ...