Java编程之GUI教程 JPanel面板和JScrollPane

JPanel是一种没有边框,不能被移动、放大、缩小或关闭的非顶层容器,默认情况下是透明的,可以使用setOpaque()方法设置。与顶层容器不同的是,面板不能独立存在,必须被添加到其他容器内部。在进行界面设计时,通常将用户界面划分成若干个区域,每个区域用一个面板。这样处理的好处是:将窗口内容结构化,有利于管理、更换、调试。JPanel类的常用方法如表12.3所示。

  • JPanel类的常用方法

常用方法

功能描述

public JPanel()

创建包括双缓冲和流布局的新Jpanel

public JPanel(LayoutManager layout)

创建包括指定布局管理器的新缓冲Jpanel

public void setLocation(int x,int y)

设置组件显示位置的左上角坐标为(x,y)

public void setSize(int width,int height)

设置组件的宽度和高度,单位是像素

表12.3中列举了JPanel类常用方法,接下来演示JPanel的使用,如例12-3所示。

例12-3  Demo1203.java

 1import javax.swing.*;
 2import javax.swing.border.*;                            // 导入标题边框需要的包
 3
 4public class Demo1203 {
 5    public static void main(String[] args) {
 6        JFrame jFrame=new JFrame("JPanel框架");
 7        jFrame.setSize(300,200);
 8        jFrame.setLocation(500,400);
 9
 10        JPanel jPanel=new JPanel();                       //创建面板对象jPanel
 11        jPanel.setSize(150,90);
 12        jPanel.setLocation(50,40);
 13        // 设置panel的边框和标题
 14        jPanel.setBorder(new TitledBorder("面板区"));  
 15        jFrame.setLayout(null);
 16        jPanel.setLayout(null);
 17        jFrame.add(jPanel);
 18
 19        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 20        jFrame.setVisible(true);
 21    }
 22}

程序的运行结果如图12.5所示。

Java编程之GUI教程 JPanel面板和JScrollPane

  • 例12-3运行结果

图12.5中,运行程序结果,先创建了JFrame窗体,然后设置布局,创建一个容器JPanel,最后将中间容器添加进JFrame窗体。在第14行代码,通过“new TitleBorder("面板区域");”设置了JPanel的边框和标题。

 

JScrollPane是一个带滚动条的面板容器,只能放置一个组件,并且不能使用布局管理器。它由下列部分组成:一个ViewPort、可选的垂直和水平滚动条、可选的行和列的头部,以及ViewPort对应显示的组件。如果需要在JScrollPane面板中放置多个组件,需要先将多个组件放置在JPanel面板容器上,然后将JPanel面板作为一个整体组件添加到JScrollPane面板中。JScrollPane类的常见方法如表12.4所示。

  • JScrollPane类的常见方法

常见方法

功能描述

public JScrollPane()

创建一个空的JScrollPane,水平和垂直滚动条都是可选项。

public JScrollPane(Component view, int x, int y)

创建一个 JScrollPane,它将视图组件显示在一个视口中,视图位置可使用一对滚动条控制。

void setHorizontalBarPolicy(int policy)

设置水平滚动条策略

void setVerticalBarPolicy(int policy)

设置垂直滚动条策略

接下来通过一个案例来演示JScrollPane的使用,如例12-4所示。

例12-4  Demo1204.java

 1import javax.swing.*;
 2public class TestJScrollPane {
 3	public static void main(String[] args) {
 4	   JFrame jf = new JFrame("JFrame窗口");
 5        JPanel contentPane=new JPanel();;
 6        JScrollPane jPanel;
 7        JTextArea textArea=new JTextArea();
 8        textArea.setText("请接下来输入内容,回车结束!");
 9        jPanel.setBorder(new EmptyBorder(5,5,5,5));// 设置边距
 10        jPanel.setLayout(new BorderLayout(0,0));   // 设置布局
 11        jf.setContentPane(jPanel);
 12        scrollPane=new JScrollPane();
 13        jPanel.add(scrollPane,BorderLayout.CENTER);
 14        scrollPane.setViewportView(textArea);
 15        jf.setTitle("滚动面板的使用");
 16        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 17        jf.setBounds(100, 100, 250, 200);
 18        jf.setVisible(true);
 19	}
 20}

程序的运行结果如图12.6所示。

Java编程之GUI教程 JPanel面板和JScrollPane

  • 例12-4运行结果

案例12-4中,在JTextArea文本区域组件不断输入内容回车,当内容超出滚动面板宽度和高度的时候,JScrollPane会出现横向和纵向滚动条。在第8行代码处设置了边界宽度,距离外部边界距离都是5px;第10行代码处设置了布局方式为BorderLayout,组件之间的水平和垂直距离都是0px。

上一篇:基于学生信息管理系统的数据库系统课程设计升级版(mysql)


下一篇:游戏制作日常之敲bug1