黑马程序员_Java基础_GUI

来源:互联网 发布:ipad2更新不了软件 编辑:程序博客网 时间:2024/06/05 04:53

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

GUI是Java中提供的一个图形化界面的操作类,其中布局方式有:

BorderLayout (边界布局)、FlowLayout(线性布局)、BoxLayout()、CardLayout(卡片布局)、GridLayout(表格布局)等等,布局间是可以进行嵌套使用的,此时需要Panel(面板)。

在GUI中,开发步骤为:1.组件的初始化,布局      2.设置监听    3.事件处理

package com.itheima.gui;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Dialog;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Label;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.Panel;import java.awt.TextArea;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;import java.io.BufferedReader;import java.io.FileReader;public class GUIDemo {private Frame frame;private MenuBar mBar;private TextArea mTextArea;private Menu menu1,menu2;private MenuItem item1,item2,item3;private FileDialog dialog1,dialog2;private Button b1,b2;private Dialog d ;private Label l;private Panel p;public GUIDemo(){init();}//初始化组件,设置监听private void init(){frame = new Frame();frame.setTitle("记事本");mTextArea = new TextArea(10, 100);mBar = new MenuBar();item1 = new MenuItem("new");item2 = new MenuItem("open");item3 = new MenuItem("save");dialog1 = new FileDialog(frame, "打开", FileDialog.LOAD);dialog2 = new FileDialog(frame, "保存", FileDialog.SAVE);menu1 = new Menu("file");l = new Label("exit...........?");d = new Dialog(frame);d.setLayout(new BorderLayout());d.setBounds(350, 250, 250, 95);b1 = new Button("ok");b2 = new Button("cancle");p = new Panel(new FlowLayout());p.add(b1);p.add(b2);d.add(l,BorderLayout.NORTH);d.add(p,BorderLayout.CENTER);d.setTitle("确定退出吗?");d.setAutoRequestFocus(true);menu1.add(item1);menu1.add(item2);menu1.add(item3);menu2 = new Menu("edit");frame.setBounds(300, 200, 500, 400);frame.setLayout(new BorderLayout());frame.setLocation(300, 200);mBar.add(menu1);mBar.add(menu2);frame.setMenuBar(mBar);frame.add(mTextArea);frame.setFocusable(true);setEventListener();frame.setVisible(true);}//设置监听器private void setEventListener(){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});item1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {mTextArea.setText("");}});mTextArea.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {if(e.getKeyCode() == KeyEvent.VK_ESCAPE){mTextArea.setFocusable(false);}}});mTextArea.addMouseListener(new MouseAdapter() {@Overridepublic void mousePressed(MouseEvent e) {mTextArea.setFocusable(true);}});frame.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {if(e.getKeyCode() == KeyEvent.VK_ESCAPE){d.setVisible(true);}}});d.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {d.setVisible(false);}});b1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});b2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {d.setVisible(false);}});item2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {mTextArea.setText("");dialog1.setVisible(true);String filePath = dialog1.getDirectory()+dialog1.getFile();if(dialog1.getDirectory()==null || dialog1.getFile() == null){return;}try {BufferedReader mReader = new BufferedReader(new FileReader(filePath));String line = null;while((line = mReader.readLine())!= null){mTextArea.append(line);mTextArea.append(System.getProperty("line.separator"));}} catch (Exception e1) {e1.printStackTrace();}}});item3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog2.setVisible(true);}});}public static void main(String[] args) {new GUIDemo();}}
关于GUI中的API没有详细查看,但是重要的是图像界面的编程思想。


---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

0 0
原创粉丝点击