第十五讲 JavaGUI编程入门
主要内容 Java GUI窗口概述 用JFrame类创建窗口 最常用组件的创建和使用 (JLabel、JTextField、JTextArea、JScrollpane、JButton) |
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.awt,javax.swing)
² 对象放置于窗口
² 窗口布局
java.awt和javax.swing
创建GUI Application和Applet的必备软件包。
两者中均有一套界面元素组件。风格稍有不同,如:
软件包中还含有布局管理、事件处理的类和接口。
Java屏幕坐标
假如显示器分辩率为1024*768,则屏幕坐标系如下:
(0,0) (1024,0)
屏幕
(0,768) (1024,768)
JFrame类创建窗口
Frame、JFrame可为应用程序构建主框架。几乎所有的GUI应用程序都在主框架中进行。由继承可见,Frame、JFrame是具有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):设置列数
说明:颜色、字体、内容的设置同上(setForeground、setFont、setText)
滚动面板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.如何生成一个字体对象,并设置常用组件的字体? |