JFrame,JPanel,JLabel详解
2016-05-24 14:06
633 查看
JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。
JPanel是一个容器类,相当于一大玻璃窗。
JLabel等是一些基础组件,它必须置于某个容器里,类似于窗花、剪纸,必须置于窗户的表面。
JFrame自带了一个玻璃窗。可以通过语句 Container c=getContentPane(); 获得该内容窗格。
也可以定制一个新的玻璃面板替换原来的自带的玻璃窗,代码如下:
JPanel jp=new JPanel();
this.setContentPane(jp);
JFrame
java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
Swing
的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 JFrame 实际上不仅仅让程序员把组件放入其中并呈现给用户。比起它表面上的简单性,它实际上是 Swing 包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的 Swing 组件与实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。
JPanel
用途
组件是构成应用程序界面的基本元素,按钮、文本框、进度条等,都是组件。可视化组件又可以分为容器组件和非容器组件,可以在JPanel中放置按钮、文本框等非容器组件,甚至可。以在JPanel中再放置若干个JPanel组件,顶层容器也是容器组件,每一个窗口应用程序中有且只能有一个顶层容器组件。
构造方法
创建
JPanel myPanel = new JPanel();
构造方法
JPanel() 创建具有双缓冲和流布局的新Jpanel
JPanel(Boolean isDoubleBuffered) 创建具有FlowLayout和指定缓冲策略的新Jpanel
JPanel(LayoutManager layout) 创建具有指定布局管理器的新缓冲Jpanel
JPanel(LayoutManager layout, boolean isDoubleBuffered) 创建具有指定布局管理器和缓冲策略的新Jpanel
常用方法
略
注意点
略
使用示例
(下列程序来自网上示例程序,JPanel是可以嵌入在JFrame中的)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Test extends JFrame
{
JPanel contPanel = new JPanel();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
JButton next = new JButton("下一个");
JButton pre = new JButton("上一个");
public Test()
{
setBounds(0,0,200,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contPanel.add(pane1);
pane1.add(next);
pane2.add(pre);
next.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane1);
contPanel.add(pane2);
contPanel.revalidate();
contPanel.repaint();
}
});
pre.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane2);
contPanel.add(pane1);
contPanel.revalidate();
contPanel.repaint();
}
});
setContentPane(contPanel);
setVisible(true);
}
public static void main(String [] args)
{
new Test();
}
}
1.
public JLabel(String text, Icon icon, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面文字为text图标为icon,水平对齐方式为horizontalAlignment,其值可为SwingConstants.LEFT、SwingConstants.CENTER及SwingConstants.RIGHT。
2.
public JLable(String text, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面文字为text,水平对齐方式为horizontalAlignment。
3.
public JLabel(String text)
构造器。Label标记元件配置在显示区的中央部分,钮面文字为text,左边对齐。
4.
public JLabel(Icon image, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面图标为icon,水平对齐方式为horizontalAlignment。
5.
public JLabel(Icon image)
构造器。Label标记元件配置在显示区的中央部位,钮面图标为icon,左边对齐。
6.
public JLabel()
构造器。Label标记元件配置在显示萄中央部位,左边对齐。
7.
public Icon getIcon()
返回图标Icon对象。
8.
public String getText()
返回钮面文字字符串。
9.
public void setIcon(Icon icon)
设置图标Icon对象为icon。
10.
public void setText(String text)
GUI界面开发演示
/**
* 功能:gui界面开发演示
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Swing_1 extends JFrame{
//定义按钮组件
JButton jb1 = null;
public static void main(String[] args) {
Swing_1 swing = new Swing_1();
}
//构造函数
public Swing_1(){
//JFrame是一个顶层容器
jb1 = new JButton("我是按钮");
//设置窗体的标题
this.setTitle("MyFirstSwing");
//设置大小,按像素
this.setSize(200,200);
//添加JButton组建
this.add(jb1);
//设置窗体位置
this.setLocation(400, 200);
//设置当关闭窗口时,保证jvm也退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见性
this.setVisible(true);
}
}
/*
* 边界布局管理器
* BorderLayout演示
* 1.继承JFrame
* 2.定义你需要的各个组建
* 3.创建组件
* 4.添加组建
* 5.对窗体设这
* 6.显示窗体
*/
package com.test1;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.*;
public class Border extends JFrame{
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
Border border = new Border();
}
//构造函数
public Border(){
//创建组件
jb1 = new JButton("中");
jb2 = new JButton("北");
jb3 = new JButton("东");
jb4 = new JButton("南");
jb5 = new JButton("西");
//添加各个组件
//this.add(jb1)没有指定位置的话,会被覆盖
this.add(jb1, BorderLayout.CENTER);
this.add(jb2, BorderLayout.NORTH);
this.add(jb3, BorderLayout.EAST);
this.add(jb4, BorderLayout.SOUTH);
this.add(jb5, BorderLayout.WEST);
//设置窗体属性
this.setTitle("边界布局");
this.setSize(300,200);
this.setLocation(400,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
/**
* 功能:流式布局案例
*/
package com.test1;
import javax.swing.*;
import java.awt.*;
public class Flow extends JFrame{
//定义需要的组件
JButton jb1,jb2,jb3,jb4,jb5,jb6;
public static void main(String[] args) {
Flow flow = new Flow();
}
//构造函数
public Flow(){
//创建组件
jb1=new JButton("关羽");
jb2=new JButton("张飞");
jb3=new JButton("赵云");
jb4=new JButton("马超");
jb5=new JButton("黄忠");
jb6=new JButton("魏延");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
this.add(jb6);
//设置布局管理器
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//this.setLayout(new FlowLayout(FlowLayout.TRAILING));
//this.setLayout(new FlowLayout(FlowLayout.RIGHT) );
//this.setLayout(new FlowLayout(FlowLayout.CENTER));
//this.setLayout(new FlowLayout(FlowLayout.L));
//设置窗体属性
this.setTitle("边界布局");
this.setSize(300,200);
this.setLocation(400,200);
//禁止用户改变窗体大小
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示
this.setVisible(true);
}
}
/**
* 功能:网格布局
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Grid extends JFrame{
//定义组件
int size = 9 ;
JButton jbs[] =
new JButton[size];
public static void main(String[] args) {
//创建实例
Grid grid = new Grid();
}
public Grid(){
//创建组件
for(int i = 0 ; i<9 ; i++){
jbs[i] =
new JButton (String.valueOf(i));
}
//设置网格布局(3,3)表示3行3列
this.setLayout(new GridLayout(3,3,10,10));
//添加组件
for(int i = 0 ; i < 9 ; i++){
this.add(jbs[i]);
}
//设置窗体属性
this.setTitle("网格布局");
this.setSize(300,200);
this.setLocation(400,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
JPanel是一个容器类,相当于一大玻璃窗。
JLabel等是一些基础组件,它必须置于某个容器里,类似于窗花、剪纸,必须置于窗户的表面。
JFrame自带了一个玻璃窗。可以通过语句 Container c=getContentPane(); 获得该内容窗格。
也可以定制一个新的玻璃面板替换原来的自带的玻璃窗,代码如下:
JPanel jp=new JPanel();
this.setContentPane(jp);
JFrame
java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
Swing
的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 JFrame 实际上不仅仅让程序员把组件放入其中并呈现给用户。比起它表面上的简单性,它实际上是 Swing 包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的 Swing 组件与实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。
构造方法
JFrame() 构造一个初始时不可见的新窗体。 |
JFrame(GraphicsConfiguration gc) 以屏幕设备的指定 GraphicsConfiguration 和空白标题创建一个 Frame。 |
JFrame(String title) 创建一个新的、初始不可见的、具有指定标题的 Frame。 |
JFrame(String title, GraphicsConfiguration gc) 创建一个具有指定标题和指定屏幕设备的 GraphicsConfiguration 的 JFrame。 |
常用方法
protected void | addImpl(Component comp, Object constraints, int index) 添加指定的子 Component。 |
protected JRootPane | createRootPane() 由构造方法调用,以创建默认的 rootPane。 |
protected void | frameInit() 由构造方法调用,以适当地初始化 JFrame。 |
AccessibleContext | getAccessibleContext() 获得与此 JFrame 关联的 AccessibleContext。 |
Container | getContentPane() 返回此窗体的 contentPane 对象 |
int | getDefaultCloseOperation() 返回用户在此窗体上发起 "close" 时执行的操作。 |
Component | getGlassPane() 返回此窗体的 glassPane 对象。 |
Graphics | getGraphics() 为组件创建一个图形上下文。 |
JMenuBar | getJMenuBar() 返回此窗体上设置的菜单栏。 |
JLayeredPane | getLayeredPane() 返回此窗体的 layeredPane 对象。 |
JRootPane | getRootPane() 返回此窗体的 rootPane 对象。 |
TransferHandler | getTransferHandler() 获取 transferHandler 属性。 |
static boolean | isDefaultLookAndFeelDecorated() 如果新创建的 JFrame 应该由当前外观为其提供 Window 装饰,则返回 true。 |
protected boolean | isRootPaneCheckingEnabled() 返回是否将对 add 和 setLayout 的调用转发到 contentPane。 |
protected String | paramString() 返回此 JFrame 的字符串表示形式。 |
protected void | processWindowEvent(WindowEvent e) 处理此组件上发生的窗口事件。 |
void | remove(Component comp) 从该容器中移除指定组件。 |
void | repaint(long time, int x, int y, int width, int height) 在 time 毫秒内重绘此组件的指定矩形区域。 |
void | setContentPane(Container contentPane) 设置 contentPane 属性。 |
void | setDefaultCloseOperation(int operation) 设置用户在此窗体上发起 "close" 时默认执行的操作。 |
static void | setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated) 提供一个关于新创建的 JFrame 是否应该具有当前外观为其提供的 Window 装饰(如边框、关闭窗口的小部件、标题等等)的提示。 |
void | setGlassPane(Component glassPane) 设置 glassPane 属性。 |
void | setIconImage(Image image) 设置要作为此窗口图标显示的图像。 |
void | setJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏。 |
void | setLayeredPane(JLayeredPane layeredPane) 设置 layeredPane 属性。 |
void | setLayout(LayoutManager manager) 设置 LayoutManager。 |
protected void | setRootPane(JRootPane root) 设置 rootPane 属性。 |
protected void | setRootPaneCheckingEnabled(boolean enabled) 设置是否将对 add 和 setLayout 的调用转发到 contentPane。 |
void | setTransferHandler(TransferHandler newHandler) 设置 transferHandler 属性,该属性是支持向此组件传输数据的机制。 |
void | update(Graphics g) 只是调用 paint(g)。 |
用途
组件是构成应用程序界面的基本元素,按钮、文本框、进度条等,都是组件。可视化组件又可以分为容器组件和非容器组件,可以在JPanel中放置按钮、文本框等非容器组件,甚至可。以在JPanel中再放置若干个JPanel组件,顶层容器也是容器组件,每一个窗口应用程序中有且只能有一个顶层容器组件。
构造方法
创建
JPanel myPanel = new JPanel();
构造方法
JPanel() 创建具有双缓冲和流布局的新Jpanel
JPanel(Boolean isDoubleBuffered) 创建具有FlowLayout和指定缓冲策略的新Jpanel
JPanel(LayoutManager layout) 创建具有指定布局管理器的新缓冲Jpanel
JPanel(LayoutManager layout, boolean isDoubleBuffered) 创建具有指定布局管理器和缓冲策略的新Jpanel
常用方法
略
注意点
略
使用示例
(下列程序来自网上示例程序,JPanel是可以嵌入在JFrame中的)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Test extends JFrame
{
JPanel contPanel = new JPanel();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
JButton next = new JButton("下一个");
JButton pre = new JButton("上一个");
public Test()
{
setBounds(0,0,200,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contPanel.add(pane1);
pane1.add(next);
pane2.add(pre);
next.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane1);
contPanel.add(pane2);
contPanel.revalidate();
contPanel.repaint();
}
});
pre.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane2);
contPanel.add(pane1);
contPanel.revalidate();
contPanel.repaint();
}
});
setContentPane(contPanel);
setVisible(true);
}
public static void main(String [] args)
{
new Test();
}
}
Jlabel
JLabel类中常用的方法
1.public JLabel(String text, Icon icon, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面文字为text图标为icon,水平对齐方式为horizontalAlignment,其值可为SwingConstants.LEFT、SwingConstants.CENTER及SwingConstants.RIGHT。
2.
public JLable(String text, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面文字为text,水平对齐方式为horizontalAlignment。
3.
public JLabel(String text)
构造器。Label标记元件配置在显示区的中央部分,钮面文字为text,左边对齐。
4.
public JLabel(Icon image, int horizontalAlignment)
构造器。Label标记元件配置在显示区的中央部位,钮面图标为icon,水平对齐方式为horizontalAlignment。
5.
public JLabel(Icon image)
构造器。Label标记元件配置在显示区的中央部位,钮面图标为icon,左边对齐。
6.
public JLabel()
构造器。Label标记元件配置在显示萄中央部位,左边对齐。
7.
public Icon getIcon()
返回图标Icon对象。
8.
public String getText()
返回钮面文字字符串。
9.
public void setIcon(Icon icon)
设置图标Icon对象为icon。
10.
public void setText(String text)
GUI界面开发演示
/**
* 功能:gui界面开发演示
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Swing_1 extends JFrame{
//定义按钮组件
JButton jb1 = null;
public static void main(String[] args) {
Swing_1 swing = new Swing_1();
}
//构造函数
public Swing_1(){
//JFrame是一个顶层容器
jb1 = new JButton("我是按钮");
//设置窗体的标题
this.setTitle("MyFirstSwing");
//设置大小,按像素
this.setSize(200,200);
//添加JButton组建
this.add(jb1);
//设置窗体位置
this.setLocation(400, 200);
//设置当关闭窗口时,保证jvm也退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见性
this.setVisible(true);
}
}
/*
* 边界布局管理器
* BorderLayout演示
* 1.继承JFrame
* 2.定义你需要的各个组建
* 3.创建组件
* 4.添加组建
* 5.对窗体设这
* 6.显示窗体
*/
package com.test1;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.*;
public class Border extends JFrame{
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
Border border = new Border();
}
//构造函数
public Border(){
//创建组件
jb1 = new JButton("中");
jb2 = new JButton("北");
jb3 = new JButton("东");
jb4 = new JButton("南");
jb5 = new JButton("西");
//添加各个组件
//this.add(jb1)没有指定位置的话,会被覆盖
this.add(jb1, BorderLayout.CENTER);
this.add(jb2, BorderLayout.NORTH);
this.add(jb3, BorderLayout.EAST);
this.add(jb4, BorderLayout.SOUTH);
this.add(jb5, BorderLayout.WEST);
//设置窗体属性
this.setTitle("边界布局");
this.setSize(300,200);
this.setLocation(400,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
/**
* 功能:流式布局案例
*/
package com.test1;
import javax.swing.*;
import java.awt.*;
public class Flow extends JFrame{
//定义需要的组件
JButton jb1,jb2,jb3,jb4,jb5,jb6;
public static void main(String[] args) {
Flow flow = new Flow();
}
//构造函数
public Flow(){
//创建组件
jb1=new JButton("关羽");
jb2=new JButton("张飞");
jb3=new JButton("赵云");
jb4=new JButton("马超");
jb5=new JButton("黄忠");
jb6=new JButton("魏延");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
this.add(jb6);
//设置布局管理器
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//this.setLayout(new FlowLayout(FlowLayout.TRAILING));
//this.setLayout(new FlowLayout(FlowLayout.RIGHT) );
//this.setLayout(new FlowLayout(FlowLayout.CENTER));
//this.setLayout(new FlowLayout(FlowLayout.L));
//设置窗体属性
this.setTitle("边界布局");
this.setSize(300,200);
this.setLocation(400,200);
//禁止用户改变窗体大小
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示
this.setVisible(true);
}
}
/**
* 功能:网格布局
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Grid extends JFrame{
//定义组件
int size = 9 ;
JButton jbs[] =
new JButton[size];
public static void main(String[] args) {
//创建实例
Grid grid = new Grid();
}
public Grid(){
//创建组件
for(int i = 0 ; i<9 ; i++){
jbs[i] =
new JButton (String.valueOf(i));
}
//设置网格布局(3,3)表示3行3列
this.setLayout(new GridLayout(3,3,10,10));
//添加组件
for(int i = 0 ; i < 9 ; i++){
this.add(jbs[i]);
}
//设置窗体属性
this.setTitle("网格布局");
this.setSize(300,200);
this.setLocation(400,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树