您的位置:首页 > 产品设计 > UI/UE

黑马程序员_javaGUI

2014-01-13 11:35 330 查看
------- android培训java培训、期待与您交流!
----------

GUI:图形用户界面

Java为GUI提供的对象都存在java.Awt和java.Swing两个包中。

java.Awt:重量级控件

java.Swing:轻量级控件,在Awt的基础上。

Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其
他组件进来。

GUI布局

容器中组件的排放方式就是布局。

常见的布局管理器有:

FlowLayout流式布局管理器,从左到右的顺序排序,Panel默认的管理器。

BorderLayout边界布局管理器,东、南、西、北、中,Frame默认的管理器

GridLayout网格布局管理器,规则的矩阵

CardLayout卡片布局管理器,选项卡

GridBagLayout网格包布局管理器,非规则的矩阵

创建图形化界面

1,创建frame窗体。

2,对窗体进行基本设置。

比如大小,位置,布局。

3,定义组件。

4,将组件通过窗体的add方法添加到窗体中。

5,让窗体显示,通过setVisible(true)

import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

classAwtDemo

{

public static voidmain(String[] args)

{

Frame f=newFrame("我的窗体");//创建Fram窗体

f.setSize(500,300);//设置迷你小窗口的横纵坐标,500是横坐标,300是纵坐标

f.setLocation(400,300);//设置本地位置

f.setLayout(newFlowLayout());//设置布局管理

Button b=newButton("我是一个按钮");//创建按钮控件

f.add(b);//将按钮添加到Fram窗体中

f.setVisible(true);//设置窗体为显示

}

}

事件监听机制

事件监听机制的特点:

事件源:就是awt包或者swing包中的那些图形界面组件。

事件:每一个事件源都有自己特有的对应事件和共性事件。

监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。

事件处理:

前三项,在java中都已经定义好了。

直接获取其对象来用就可以了。

我们要做的事情是,就是对产生的动作进行处理。

窗体事件

f.addWindowListener(new WindowAdapter()//添加窗体事件

{

public voidwindowClosing(WindowEvent e)//实现windowClosing关闭方法

{

System.exit(0);//退出

}

});

因为WindowListener的子类WindowAdapter已经实现了WindowListener接口。

并覆盖了其中的所有方法。那么我只要继承自Windowadapter覆盖我需要的方法即可。

void windowActivated(WindowEvent e)
激活窗体

void windowOpened(WindowEvent e)
打开窗体

Action事件

Button b=new Button("my Button");

b.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

System.out.println("退出,按钮干的");

System.exit(0);

}

});

ActionListener
没有适配器的接口

鼠标事件

Button b=new Button("My Button");

b.addMouseListener(newMouseAdapter()//添加指定的鼠标监听器

{

private intcount=1;

private intclickcount=1;

public voidmouseEntered(MouseEvent e)//进入

{

System.out.println("鼠标进入到该组件"+count++);

}

public voidmouseClicked(MouseEvent e)//单机

{

if(e.getClickCount()==2)//获取单机次数

System.out.println("双机动作"+clickcount++);

}

});

键盘事件

TextField tf=new TextField(10);//文本框

Button b=newButton("My Button");

tf.addKeyListener(newKeyAdapter()//添加指定的键盘监听器

{

public voidkeyPressed(KeyEvent e)//键盘按下

{

if(!(e.getKeyCode()/*获取键对应的码*/>=KeyEvent.VK_0&&e.getKeyCode()<=KeyEvent.VK_9))

System.out.println(e.getKeyCode()+"...是非法的");

e.consume();

}

});

b.addKeyListener(newKeyAdapter()

{

public voidkeyPressed(KeyEvent e)

{

if(e.isControlDown()/*判断ctrl键按下*/&&e.getKeyCode()==KeyEvent.VK_ENTER)

System.out.println("ctrl+enteris run");

}

});

列出指定目录内容(含有错误对话框提示)

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class MyWindowDemo

{

private Frame f;

private TextField tf;

private Button b;

private TextArea ta;//文本区域,既能指定行,又能指定列

(对话框)

private Dialog d;

private Label l;//文字

private Button b1;

MyWindowDemo()

{

init();

}

public void init()

{

f=new Frame("MyWindow");

f.setBounds(200,200,500,600);

f.setLayout(newFlowLayout());

tf=new TextField(50);

b=new Button("转到");

ta=newTextArea(40,55);

f.add(tf);

f.add(b);

f.add(ta);

d=new Dialog(f,"错误信息提示",true);

d.setBounds(200,300,200,150);

d.setLayout(newFlowLayout());

l=new Label();

b1=new Button("确定");

d.add(l);

d.add(b1);

MyEvent();

f.setVisible(true);

}

private void MyEvent()

{

b1.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

d.setVisible(false);

}

});

d.addWindowListener(newWindowAdapter()

{

public voidwindowClosing(WindowEvent e)

{

d.setVisible(false);

}

});

tf.addKeyListener(newKeyAdapter()

{

public voidkeyPressed(KeyEvent e)

{

if(e.getKeyCode()==KeyEvent.VK_ENTER)

showDir();

}

});

b.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

showDir();

}

});

f.addWindowListener(newWindowAdapter()

{

public voidwindowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

private void showDir()

{

Stringdirpath=tf.getText();

Filedir=new File(dirpath);

if(dir.exists()&&dir.isDirectory())

{

String[]names=dir.list();

for(Stringname:names)

{

ta.append(name+"\r\n");//追加文本

}

}

else

{

Stringinfo="您输入的信息:"+dirpath+"是错误的,请重输";

l.setText(info);

d.setVisible(true);

}

}

public static voidmain(String[] args)

{

new MyWindowDemo();

}

}

菜单

import java.awt.*;

import java.awt.event.*;

class MyMenuDemo

{

private Frame f;

private MenuBar mb;

private Menu m,subMenu;

private MenuItemcloseItem,subItem;

MyMenuDemo()

{

init();

}

public void init()

{

f=new Frame("MyWindow");

f.setBounds(300,200,400,500);

f.setLayout(new FlowLayout());

mb=new MenuBar();

m=new Menu("文件");

subMenu=newMenu("子菜单");

subItem=newMenuItem("子条目");

closeItem=newMenuItem("退出");

m.add(subMenu);

subMenu.add(subItem);

f.setMenuBar(mb);//在框架中添加菜单栏

mb.add(m);

m.add(closeItem);

MyEvent();

f.setVisible(true);

}

public void MyEvent()

{

f.addWindowListener(newWindowAdapter()

{

public voidwindowClosing(WindowEvent e)

{

System.exit(0);

}

});

closeItem.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

System.exit(0);

}

});

}

public static voidmain(String[] args)

{

new MyMenuDemo();

}

}

打开与保存文件的小练习

package myMenu;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class MyMenuTest

{

private Frame f;

private MenuBar bar;

private TextArea ta;

private Menu fileMenu;

private FileDialogopenDia,saveDia;

private MenuItemopenItem,saveItem,closeItem;

private File file;

MyMenuTest()

{

init();

}

public void init()

{

f=new Frame("MyWindow");

f.setBounds(200,100,600,500);

//f.setLayout(newFlowLayout());

bar=new MenuBar();

fileMenu=newMenu("文件");

openItem=newMenuItem("打开");

saveItem=newMenuItem("保存");

closeItem=newMenuItem("关闭");

f.setMenuBar(bar);

bar.add(fileMenu);

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(closeItem);

openDia=newFileDialog(f,"我要打开",FileDialog.LOAD);

saveDia=newFileDialog(f,"我要保存",FileDialog.SAVE);

ta=new TextArea();

f.add(ta);

MyEvent();

f.setVisible(true);

}

public void MyEvent()

{

f.addWindowListener(newWindowAdapter()

{

public voidwindowClosing(WindowEvent e)

{

System.exit(0);

}

});

closeItem.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

System.exit(0);

}

});

openItem.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

openDia.setVisible(true);

StringdirPath=openDia.getDirectory();

StringfileName=openDia.getFile();

System.out.println(dirPath+"..."+fileName);

if(dirPath==null||fileName==null)

return;

file=newFile(dirPath,fileName);

try

{

BufferedReaderbr=new BufferedReader(new FileReader(file));

Stringline=null;

while((line=br.readLine())!=null)

{

ta.append(line+"\r\n");

}

br.close();

}

catch(IOException ex)

{

thrownew RuntimeException("读取失败");

}

}

});

saveItem.addActionListener(newActionListener()

{

public voidactionPerformed(ActionEvent e)

{

if(file==null)

{

saveDia.setVisible(true);

StringdirPath=saveDia.getDirectory();

StringfileName=saveDia.getFile();

System.out.println(dirPath+"..."+fileName);

if(dirPath==null||fileName==null)

return;

file=newFile(dirPath,fileName);

}

try

{

BufferedWriterbw=new BufferedWriter(new FileWriter(file));

Stringtext=ta.getText();

bw.write(text);

bw.flush();

bw.close();

}

catch(IOException ex)

{

throw new RuntimeException("写入失败");

}

}

});

}

public static voidmain(String[] args)

{

new MyMenuTest();

}

}

------- android培训java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: