丁保国的博客

收集整理工作生活,点点滴滴

  :: :: 博问 :: 闪存 :: :: :: :: 管理 ::

第十五讲 JavaGUI编程入门

主要内容

Java GUI窗口概述

JFrame类创建窗口

最常用组件的创建和使用

(JLabelJTextFieldJTextAreaJScrollpaneJButton)

 

Java GUI窗口概述

一个最简单的Java GUI示例

import javax.swing.*;

public class FirstFrame {

    public static void main( String[] args ) {

        JFrame f = new JFrame();

        f.setSize( 300, 200 );

        f.setVisible(true);

    }

}

 

问题

²       该窗口的关闭按钮不能结束程序

²       窗口无标题

²       窗口中没有内容

 

窗口的界面元素

标签、文本框、按钮、复选框、菜单……

²       类创建对象java.awtjavax.swing

²       对象放置于窗口

²       窗口布局

 

java.awtjavax.swing

创建GUI ApplicationApplet的必备软件包。

两者中均有一套界面元素组件。风格稍有不同,如:

 

软件包中还含有布局管理、事件处理的类和接口。

 

Java屏幕坐标

假如显示器分辩率为1024*768,则屏幕坐标系如下:

 

 (0,0)                              (1024,0)

 

 

 

                屏幕

 

 

 

(0,768)                           (1024768)

 

JFrame类创建窗口

FrameJFrame可为应用程序构建主框架。几乎所有的GUI应用程序都在主框架中进行。由继承可见,FrameJFrame是具有Windows窗口特征的容器组件。

JFrame类的层次结构

 

由此可见,JFrame类继承了Frame

Component :抽象类,归纳了所有图形用户界面上的组件。

Containter:容器也是组件,特别的是容器中可以容放组件。

 

构造方法

public JFrame()创建一个简单的窗口,默认不可见。

public JFrame(String Title)创建一个带有标题的窗口。窗口标题置为Title,默认不可见。

 

JFrame的设置和显示方法

public void setBound(int x,int y,int w,int h)

设置窗口左上角位置和窗口大小 

public void setVisible(boolean b)    显示、隐藏窗口

public void setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

设定窗口响应用户的关闭操作

public void setTitle(String title)  设置窗口标题

 


练习:设计一个可关闭的、确定尺寸的、确定显示位置的、有标题的窗口,如图。

import javax.swing.*;

public class SimpleFrame extends JFrame {

  SimpleFrame(){

 

  }

 

  public static void main( String[] args ) {

     new SimpleFrame();

  }

}

思考

1.    如果一个类继承JFrame类,由该类创建的对象是?

2.    如何让一个窗口可见?

3.    如何设置可关闭的窗口?

4.    窗口标题有哪些方法设置?

5.    如何设置窗口的大小?

6.    JFrame在哪个软件包中?

 

JFrame窗口中加入组件

组件不能直接放置到JFrame窗口,要先获取窗口的包容器,再布局,然后将组件加入到容器中。

获取窗口的包容器

public Container getContentPane()

如:

JFrame f=JFrame();

Container c=f.getContentPane();

c.setLayout(new FlowLayout());//进行顺序排放组件的设置

 

说明:

1、Container类在java.awt包中。

2、默认的布局是叠放形式。(叠放和其它布局以后讨论)

 

将组件加入到窗口

public void add(Component comp)

如:

c.add(new Button(“Count”));

c.add(new JLabel(“Try”));

 

调整和设置窗口

public void pack()      根据组件调整窗口到适当大小

public void setLocation(int x,int y) 窗口左上角设置

public void setResizable(boolean)    允许或禁止缩放

public void setSize(int w,int h)  窗口大小设置

 

练习:修改上面的SimpleFrame.java,在窗口中加入一个标签和按钮。

 

 

最常用组件的创建和使用

标签 (JLabel)

 

用来显示文字,图标(可以文字与图标同时显示)

JLabel构造方法

JLabel()                    创建一个空标签

JLabel(String c)          指定标签文本

 

常用设置方法

设置标签显示文本:public void setText(String c)

取得标签显示文本:public StringgetText()

字体设置:public voidsetFont(Font f)

前景色设置 public void setForeground(Color c)

一个简单的标签示例

 

 

 

单行文本框(JTextField)

 

 

构造方法

JTextField()

JTextField(int columns)             指定宽度

JTextField(String text)            指定初始化文本

JTextField(String text, int columns)

 

常用方法

设置标签显示文本:public void setText(String c)

取得标签显示文本:public StringgetText()

字体设置:public voidsetFont(Font f)

前景色设置 public void setForeground(Color c)

 

一个单行文本框示例

 

 

 

多行文本框(JTextArea

 

构造方法

JTextArea()

JTextArea(int rows,columns)    指定尺寸

JTextArea(String text)          指定初始化文本

JTextArea(String text,int rows, int columns)

 

常用设置方法

public void setLineWrap(boolean wrap)换行状态设置

public void setRows(int rows)设置行数

public void setColumns(int columns)设置列数

说明:颜色、字体、内容的设置同上(setForegroundsetFontsetText

 

滚动面板JScrollPane

将多行文本框置入滚动面板,就可以生成立体感的文本框。

JScrollPane是一个嵌有滚动条的面板。

JScrollPane将滚动条和滚动条所服务的组件组合在了一起。

 

构造方法

public JScrollPane(view v)

可用add方法,将滚动面板加入到容器,由此加入到窗口中。

 

练习:设计并显示如下窗口,在多行文本框中显示“read.txt”的内容。

 

 

import java.awt.*;

import javax.swing.*;

import java.io.*;

 

class ReadFile extends JFrame{

  JTextArea t=new JTextArea(12,40);

  ReadFile(){

 

 

     this.setBounds(300,300,500,300);

     this.setVisible(true);

  }

  static String getFileText(){

 

 

  }

 

  public static void main(String[] args){

     new ReadFile();

   }

}

按钮(JButton)

用户可通过按钮发布命令。

 

按钮的创建

构造方法:

JButton()

JButton(String c)           指定显示文本

JButton(Icon image)           指定显示图标

JButton(String c ,Icon image)

 

练习:设计容放了三种不同风格按钮的窗口,如图所示。

 

import java.awt.*;

import javax.swing.*;

 

public class JButtonTest extends JFrame{

  JButton b1,b2,b3;

  JButtonTest(){

     super("JButton Test");

     setDefaultCloseOperation(this.EXIT_ON_CLOSE);     Container cc = getContentPane();

     cc.setLayout(new FlowLayout());

     buttonInit();

     cc.add(b1);

     cc.add(b2);

     cc.add(b3);

     this.setBounds(300, 200,350, 200);

     setVisible(true);

  }

  void buttonInit(){

     b1=new JButton("Text Button");

     b2=new JButton(new ImageIcon("logo.gif"));

      b3=new JButton("Java logo",new ImageIcon("logo.gif"));

  }

   public static void main(String args[]) throws Exception{

      new   JButtonTest();

  }

}

 

 

练习:设计如下界面的窗口

 

 

 

思考

1.    可在JFrame界面上直接add组件吗?

2.    JFrame界面上放置组件的步骤?

3.    add是哪个类的方法?

4.    如何设置容器的布局?

5.    如何创建一个指定文本的标签?

6.    如何创建单行文本框?

7.    如何创建多行文本框?

8.    怎样将多行文本框包装上滚动条?

9.    怎样对多行文本框中的文本设置成自动换行?

10.如何创建指定文字的按钮?

11.如何生成一个颜色对象,并设置常用组件的前景色?

12.如何生成一个字体对象,并设置常用组件的字体?

 

 

posted on 2007-07-21 10:52  丁保国  阅读(1152)  评论(0编辑  收藏  举报