面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane)。

JPanel

面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘画,将放有组件和有画的JPanel再放入另一个容器里。JPanel的默认布局为FlowLayout。

面板处理程序的基本内容有以下几个方面:

  1. 通过继承声明JPanel类的子类,子类中有一些组件,并在构造方法中将组件加入面板。
  2. 声明JPanel子类对象。
  3. 创建JPanel子类对象。
  4. 将JPanel子类对象加入到某个容器。

JPanel类的常用构造方法有:

  1. JPanel(),创建一个JPanel对象。
  2. JPanel(LayoutManager layout),创建JPanel对象时指定布局layout。

JPanel对象添加组件的方法:

  1. add(组件),添加组件。
  2. add(字符串,组件),当面板采用GardLayout布局时,字符串是引用添加组件的代号。

【例 11-4】小应用程序有两个JPanel子类对象和一个按钮。每个JPanel子类对象又有两个按钮和一个标签。
import java.applet.*;
import javax.swing.*;
class MyPanel extends JPanel{
    JButton button1,button2;
    JLabel Label;
    MyPanel(String s1,String s2,String s3){
        //Panel对象被初始化为有两个按钮和一个文本框
        button1=new JButton(s1);button2=new JButton(s2);
        Label=new JLabel(s3);
        add(button1);add(button2);add(Label);
    }
}
public class J504 extends Applet{
    MyPanel panel1,panel2;
    JButton Button;
    public void init(){
        panel1=new MyPanel("确定","取消","标签,我们在面板1中");
        panel2=new MyPanel("确定","取消","标签,我们在面板2中");
        Button=new JButton("我是不在面板中的按钮");
        add(panel1);add(panel2);add(Button);
        setSize(300,200);
    }
}

JScrollPane

当一个容器内放置了许多组件,而容器的显示区域不足以同时显示所有组件时,如果让容器带滚动条,通过移动滚动条的滑块,容器中位置上的组件就能看到。滚动面板JScrollPane能实现这样的要求,JScrollPane是带有滚动条的面板。JScrollPane是Container类的子类,也是一种容器,但是只能添加一个组件。JScrollPane的一般用法是先将一些组件添加到一个JPanel中,然后再把这个JPanel添加到JScrollPane中。这样,从界面上看,在滚动面板上,好像也有多个组件。在Swing中,像JTextArea、JList、JTable等组件都没有自带滚动条,都需要将它们放置于滚动面板,利用滚动面板的滚动条,浏览组件中的内容。

JScrollPane类的构造方法有:

  1. JScrollPane(),先创建JScrollPane对象,然后再用方法setViewportView(Component com)为滚动面板对象放置组件对象。
  2. JScrollPane(Component com),创建JScrollPane对象,参数com是要放置于JScrollPane对象的组件对象。为JScrollPane对象指定了显示对象之后,再用add()方法将JScrollPane对象放置于窗口中。

JScrollPane对象设置滚动条的方法是:

  1. setHorizontalScrollBarPolicy(int policy),policy 取以下列3个值之一:
        JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEED www.juhongyulept.com 
        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
  2. setVerticalScrollBarPolicy(int policy), policy 取以下列3个值之一:
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
        JScrollPane.VERTICAL_SCROLLBAR_AS_NEED
        JScrollPane.VERTICAL_SCROLLBAR_NEVER

以下代码将文本区放置于滚动面板,滑动面板的滚动条能浏览文本区
    JTextArea textA = new JTextArea(20,30);
    JScrollPane jsp = new JScrollPane(TextA);
    getContentPane().add(jsp);//将含文本区的滚动面板加入到当前窗口中。

十. 图形界面(GUI)设计4.面板的更多相关文章

  1. 十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

  2. 十. 图形界面(GUI)设计2.框架窗口

    窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...

  3. 十. 图形界面(GUI)设计3.标签、按钮和按钮事件

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色 ...

  4. 十. 图形界面(GUI)设计6.文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...

  5. 十. 图形界面(GUI)设计7.文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

  6. 十. 图形界面(GUI)设计5.布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

  7. 十. 图形界面(GUI)设计11.对话框

    对话框是为了人机对话过程提供交互模式的工具.应用程序通过对话框,或给用户提供信息,或从用户获得信息.对话框是一个临时窗口,可以在其中放置用于得到用户输入的控件.在Swing中,有两个对话框类,它们是J ...

  8. 十. 图形界面(GUI)设计9.列表和组合框

    列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文 ...

  9. 十. 图形界面(GUI)设计13.鼠标事件

    鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionL ...

随机推荐

  1. Oracle 遇到的问题:IMP-00041: 警告: 创建的对象带有编译警告解决办法

    出现IMP-00041: 警告: 创建的对象带有编译警告:以后再做数据迁移的时候需要额外注意,尤其用户中有视图或者触发器对象的时候.用户的环境是这样的,在库里有三个oracle的用户,其中一个用户中有 ...

  2. 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3

    孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...

  3. 孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类尝试第一天

     孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类,尝试第一天 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 按上一天的规划,这是根据过去我自学其它编程语 ...

  4. (原)Unreal-GamePlayer-Actor解析(1)

    (原)Unreal-GamePlayer-Actor解析(1) @author 白袍小道 前言 属于Unreal的 GamePlay 框架中Actor细节部分.主要关于Actor及其相关部件和实体的几 ...

  5. linux备忘录-bash

    知识点 环境变量 HOME PATH MAIL SHELL RANDOM // 0~32767的随机数 declare -i number=$RANDOM*10/32768 //0-9的随机数 HIS ...

  6. openssl unicode编译以及VC++2015环境下的问题

    这几天需要使用openssl,前期本机上保存的目录不知道哪天整理的时候删除了,索性下载最新的自己编译一下: 在最新版的openssl(openssl-1.0.2e),编译过程中出现了很多问题,这里主要 ...

  7. 【bzoj4756】[Usaco2017 Jan]Promotion Counting 离散化+树状数组

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832263.html 题目描述 The cows have once again tried to form a s ...

  8. 【C++ 拾遗】C++'s most vexing parse

    C++'s most vexing parse 是 Scott Meyers 在其名著<Effective STL>中创造的一个术语. Scott 用这个术语来形容 C++ 标准对于 de ...

  9. [poj] 2286 The Rotation Game || ID-DFS

    原题 有1234四个数字,每个数字八个.有八种方向的移动,使得操作后中间八个方块的数字相同,求最小操作步数. 对于这种求最小步数的看起来就是dfs的题,就ID-DFS就好了. //不知道为什么都是ID ...

  10. [poj] 3690 Constellations || 矩阵hash

    原题 在大矩阵里找有几个小矩阵出现过,多组数据 将t个矩阵hash值放入multiset,再把大矩阵中每个hash值从multiset里扔出去,这样最后剩在multiset里的值就是没有找到的小矩阵, ...