第三节 Java Swing其它容器

第三节:其它容器

在Java Swing开发中,窗体部分除了可以使用JFrame表示之外,还有其他几种常见的窗体:JPanel,JSplitPanel,JTabbedPane,JScrollPane,JdesktopPane,JInternalFrame等,下面就简单介绍几种

JPanel

JPanel也是经常使用的容器之一,可以使用JPanel完成各种复杂的界面显示。在JPanel中可以加入人意的组件,之后直接讲JPanel容器加入到JFrame中即可显示。JPanel常用方法如下:

Public JPanel()  //创建一个默认的JPanel对象,使用流布局管理

Public JPanel(LayoutManager Layout)//创建一个指定布局管理器的JPanel对象

JPanel的基本使用

import java.awt.GridLayout;

import java.io.File;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class JavaSwingTest {

public static void main(String args[]){

test1();

}

//设置JPanel

public static void test1(){

JFrame jFrame=new JFrame("Welcome to MichaelLee!");

JPanel panel=new JPanel();//如果不添加布局管理器,则默认为使用流布局管理器

//JPanel panel=new JPanel(new GridLayout(3, 3));

panel.add(new JLabel("标签-A"));

panel.add(new JLabel("标签-B"));

panel.add(new JLabel("标签-C"));

panel.add(new JButton("按钮A"));

panel.add(new JButton("按钮B"));

panel.add(new JButton("按钮C"));

jFrame.add(panel);

jFrame.setSize(400,300);

jFrame.setLocation(400,300);

jFrame.setVisible(true);

}

从程序的运行结果来看,所有的组件都是采用顺序的形式加入到JPanel中,最后再将JPanel加入到JFrame中,使用JPanel并结合布局管理器可以更加方便的管理组件,可以使用布局管理器对多个JPanel进行排列,而每个JPanel中也可以分别使用不同的布局管理器管理组件,这样就可以对组件进行复杂的排列。

在一般的图形界面中如果显示的区域不够大,可以加入滚动条方便用户浏览,在Swing中JScrollPane的主要功能就是为显示的内容加上滚动条,JScrollPane常用方法级常量。

static final int HORIZONTAL_SCROLLBAR_AS_NEEDED//始终显示水平滚动条

static final int HORIZONTAL_SCROLLBAR_AS_NEEDED//任何情况都不显示水平滚动条

static final int HORIZONTAL_SCROLLBAR_NEVER//根据自身需要显示水平滚动条

static final int VERTICAL_SCROLLBAR_ALWAYS//始终显示垂直滚动条

static final int VERTICAL_SCROLLBAR_AS_NEEDE////根据自身需要显示垂直滚动条

static final int VERTICAL_SCROLLBAR_NEVER//任何情况都不显示垂直滚动条

public JSCrollPane(Component view)//将指定的组件加入滚动条,根据大小显示水平或垂直滚动条

//设置JScorePane

public static void test2(){

JFrame jFrame=new JFrame("Welcome to MichaelLee!");

String picPath="D:"+File.separator+"孙燕姿.jpg";

Icon icon=new ImageIcon(picPath);

JPanel panel=new JPanel();

JLabel label=new JLabel(icon);

panel.add(label);

JScrollPane scr1=null;

//垂直滚动条始终显示,水平滚动条根据需要显示

scr1=new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

jFrame.add(scr1);

jFrame.setSize(230,200);

jFrame.setLocation(400,300);

jFrame.setVisible(true);

}

由于图片的大小已经超过了容器的本身,所以只显示了部分内容。水平滚动条是根据需要来显示的,而垂直滚动条是始终显示的,可以通过改变窗口的大小来查看效果。

文本组件:

各个软件系统中都存在文本框,以方便用户输入数据,在Swing中也提供了同样的文本框组件:

单行文本框:JTextField

密码文本框:JPasswordField

多行文本框:JTextArea

JTextComponent的常用方法:

Public String getText()//返回文本框的所有内容

Public String getSelectedText()//返回文本框选定的内容

Public int getSelectedStart()//返回文本框选定内容的开始点

Public int getSelectedEnd()//返回文本框选定内容的结束点

Public void setText()//设置此文本框的内容

Public void select(int selectionStart,int selectionEnd)//将指定开始点和结束点之间的内容选定

单行输入文本框:

如果要实现一个单行的输入文本,则可以使用JtextField

Public JtextField()//构造了一个默认的文本框

Public JtextField(String text)//构造了一个指定文本内容的文本框

Public void setColumns(int columns)//设置显示长度

//使用JTextField定义普通单行布局框

public static void test3(){

JFrame frame=new JFrame("Welcome to MichaelLee");

JTextField name=new JTextField(30);

JTextField noed=new JTextField("mldn",10);

JLabel nameLabel=new JLabel("输入用户姓名!");

JLabel noedLabel=new JLabel("不可编辑文本");

noed.setEnabled(false);

name.setColumns(30);

noed.setColumns(10);

frame.setLayout(new GridLayout(2,2));

frame.add(nameLabel);

frame.add(name);

frame.add(noedLabel);

frame.add(noed);

frame.setSize(300,100);

frame.setLocation(300,200);

frame.setVisible(true);

}

从效果来看虽然使用setColumns()设置了显示的行数,但在显示上并没有任何的改变,主要是GridLayout在设置时会忽略这些设置值,让每一个格子具有相同的大小。如果要解决这样的问题,可以使用绝对布局。

//使用绝对定位显示

public static void test4(){

JFrame frame=new JFrame("Welcome to MichaelLee");

JTextField name=new JTextField(30);

JTextField noed=new JTextField("mldn",10);

JLabel nameLabel=new JLabel("输入用户姓名!");

JLabel noedLabel=new JLabel("不可编辑文本");

noed.setEnabled(false);

/*name.setColumns(30);

noed.setColumns(10);*/

nameLabel.setBounds(10,10,100,20);

noedLabel.setBounds(10,30,100,20);

name.setBounds(110,10,80,20);

noed.setBounds(110,30,50,20);

frame.setLayout(null);//这一句很重要,不写这一句程序就不知道是绝对定位

frame.add(nameLabel);

frame.add(name);

frame.add(noedLabel);

frame.add(noed);

frame.setSize(300,100);

frame.setLocation(300,200);

frame.setVisible(true);

}

密文输入组件:

JTextField是使用明文方式进行显示的,现在需要将回显的内容设置成其他字符,则可以使用JPassWordField

常用方法

Public JPasswordField()//构造默认的JPasswordField对象

Public JPasswordField(String text)//构造指定内容的JPasswordField对象

Public char setEchoChar(char c)//设置回显字符,默认为”*”

Public char getEchoChar()//得到回显字符

Public char[] getPassword()//得到此文本框的所有内容

//设置密文输入组件

public static void test5(){

JFrame frame=new JFrame("Welcome to MichaelLee");

JPasswordField jpf1=new JPasswordField();

JPasswordField jpf2=new JPasswordField();

jpf2.setEchoChar(‘#‘);

JLabel Label1=new JLabel("默认的回显:");

JLabel Label2=new JLabel("回显设置‘#’:");

/*name.setColumns(30);

noed.setColumns(10);*/

Label1.setBounds(10,10,100,20);

Label2.setBounds(10,30,100,20);

jpf1.setBounds(110,10,80,20);

jpf2.setBounds(110,30,80,20);

frame.setLayout(null);//这一句很重要,不写这一句程序就不知道是绝对定位

frame.add(Label1);

frame.add(jpf1);

frame.add(Label2);

frame.add(jpf2);

frame.setSize(300,100);

frame.setLocation(300,200);

frame.setVisible(true);

}

在文本框中输入内容,第一个密文框是默认的字符*号,第二个是#号

多行文本输入组件:

可以使用JTextArea实现多行文本的输入

Public JTextArea()//构造文本域,行数和列数为0

Public JTextArea(int rows,int columns)//构造文本域,指定文本域的行数和列数

Public JTextArea(String text,int rows,int columns)//指定构造文本与的内容,行数和列数

Public void append(String str)//向文本域中追加内容

Public void replaceRange(String str,int start,int end)//替换文本与中指定范围内的内容

Public void insert(String str,int pos)//向文本域中指定位置插入内容

Public void setLineWrap(boolean wrap)//是指换行策略

//使用TextArea

public static void test6(){

JFrame frame=new JFrame("Welcome to MichaelLee");

JTextArea jta=new JTextArea(3,10);

JLabel label=new JLabel("多行文本域:");

label.setBounds(10,10,120,20);

jta.setBounds(130,10,150,100);

frame.setLayout(null);

frame.add(label);

frame.add(jta);

frame.setSize(300,150);

frame.setLocation(300,200);

frame.setVisible(true);

}

如果一个文本域过大,则可以在文本域中添加滚动条。

//设置多行文本域,并加入滚动条

public static void test7(){

JFrame frame=new JFrame("Welcome to MichaelLee");

JTextArea jta=new JTextArea(3,20);

//jta.setLineWrap(true);//如果内容过长,自动换行

JScrollPane scr1=null;

//垂直滚动条始终显示,水平滚动条根据需要显示

scr1=new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

JLabel label=new JLabel("多行文本域:");

frame.setLayout(new GridLayout(2,1));

frame.add(label);

frame.add(scr1);

frame.setSize(300,150);

frame.setLocation(300,200);

frame.setVisible(true);

}

第三节 Java Swing其它容器

时间: 2024-10-08 02:30:02

第三节 Java Swing其它容器的相关文章

Java Swing界面编程(31)---菜单条:JMenu

package com.beyole.test; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class SwingTest { public static void main(String[] args) { JFrame jFrame = new JFrame("beyole"); jFra

Java Swing界面编程(31)---菜单栏:JMenu

package com.beyole.test; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class SwingTest { public static void main(String[] args) { JFrame jFrame = new JFrame("beyole"); jFra

第二节 Java Swing中的基本容器:JFrame

第二节 基本容器:JFrame 如果要使用Swing创建一个窗口,则直接使用JFrame即可,此类事Component类的子类,常用方法如下: 小试牛刀 创建一个简单的窗口 import java.awt.*; import java.io.*; import javax.swing.*; public class JavaSwingTest { public static void main(String args[]) throws IOException{ test1(); } //创建一

(转载) Java Swing 之 JScrollPane (滚动面板) 使用方法

1 /** 2 * java swing 之JScrollPane面板 3 * 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用 4 * JScrollPane面板,JscrollPane面板是带滚动条的面板,也是一种容器,但是常用于布置单个 5 * 控件,并且不可以使用布局管理器.如果需要在JScrollPane面板中放置多个控件,需要将多个 6 * 控件放置到JPanel 面板上,然后将JPanel面板作为一个整体控件添加到JScrollPane控件上. 7

atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform

atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform 1. Absoluti 布局(经常使用) 1 2. Flow 布局(不经常使用) 1 3. BorderLayout (不经常使用) 1 4. BoxLayout( html默认布局) 2 5. CardLayout (tab 布局) 2 6. GridLayout 3 7. GridBagLayout 3 8. Fixed 定位(不经常使用) 3

Java Swing界面编程(1)

写多了jsp,对于页面式的系统已经写烦了,本人也開始着手于java swing的学习,作为菜鸟,仅想用博客记录下我的swing学习的历程.话不多说,首先開始我的第一个窗体化程序. 下面给出源码: package com.beyole.util; import java.awt.Color; import javax.swing.JFrame; public class test1 { public static void main(String[] args) { JFrame frame=ne

Java Swing 使用总结(转载)

随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 2. 图形交互方式 ava提供了专业的API用于开发图形用户界面 GUI--> Graphic  User   Interface   将要了解GUI API的框架结构,以及GUI组

Java Swing界面编程(28)---复选框:JCheckBox

程序可以通过JRadioButton实现单选按钮的功能,那么要实现复选框的功能,则必须使用JCheckBox完成. package com.beyole.util; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import

Java Swing界面编程(29)---JCheckBox事件处理

JCheckBox和JRadioButton的事件处理监听接口是一样的,都是使用ItemListener接口. package com.beyole.util; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import j