Java面板基础:JPanel和JScrollPane

news/2024/7/24 9:08:03

面板有两种,一种是普通面板(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
        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);//将含文本区的滚动面板加入到当前窗口中。


http://www.niftyadmin.cn/n/625374.html

相关文章

<input> 标签的 accept 属性

在项目中有些时候需要进行文件的上传&#xff0c;这时候在前端页面可以使用 标签的 accept 属性&#xff0c;定义和用法 accept 属性只能与 配合使用。它规定能够通过文件上传进行提交的文件类型。 <input accept"value">比如&#xff1a;输入字段可以接受 gi…

Springboot+Vue整合笔记【超详细】

| 作者&#xff1a;江夏 | 微信公众号&#xff1a;1024笔记 | 知乎&#xff1a;https://www.zhihu.com/people/qing-ni-chi-you-zi-96 | GitHub&#xff1a;https://github.com/JiangXia-1024?tabrepositories Part 1 目前很多公司的开发模式都是前后的分离的分工模式&#…

几个必须掌握的SQL优化技巧(一):查看SQL语句的执行频率

part 1 在应用的开发过程中&#xff0c;由于开发初期的数据量一般都比较小&#xff0c;所以开发过程中一般都比较注重功能上的实现&#xff0c;但是当完成了一个应用或者系统之后&#xff0c;随着生产数据量的急剧增长&#xff0c;那么之前的很多sql语句的写法就会显现出一定的…

安装python包遇到ModuleNotFoundError: No module named ‘pip‘的解决办法

今天在使用python的过程中遇到一些小问题。一开始是想安装pandas库&#xff0c;但是在安装过程中提示需要使用新版本的pip命令&#xff1a; 然后使用了 pip install --upgrade pip命令对pip进行升级&#xff0c;结果又出现了以下问题: 这时候不知道怎么回事就使用升级命令&am…

MySQL日志必知必会

part 1 在日常的开发中&#xff0c;我们都会习惯记录日志&#xff0c;通过日志我们可以记录程序在何时何种情况发生过何种事情&#xff0c;有助于我们快速地定位bug和修复bug。在任何一种数据库中&#xff0c;也有着各种各样的日志&#xff0c;记录着数据库工作的方方面面&…

Spring Boot开发图片上传并添加水印接口

| 知乎&#xff1a;https://www.zhihu.com/people/qing-ni-chi-you-zi-96 | GitHub&#xff1a;https://github.com/JiangXia-1024?tabrepositories | 博客地址&#xff1a;https://blog.csdn.net/qq_41153943 | 微信公众号&#xff1a;搜索【1024笔记】 现在知识文化领域越来…

Java注解(Annotation)的基本原理以及实现自定义注解

在我们使用springboot的时候我们知道因为注解的存在&#xff0c;使得我们的开发变得格外的方便、快捷。之前的文章Spring常用注解大全&#xff0c;值得你的收藏&#xff01;&#xff01;&#xff01;对于spring中各类注解也进行过介绍。然而注解也并不是因为spring框架的兴起才…

聊聊Spring中的AOP(笔面试必备)

| 作者&#xff1a;江夏 | 知乎&#xff1a;https://www.zhihu.com/people/1024-paper-96 | GitHub&#xff1a;https://github.com/JiangXia-1024?tabrepositories | 博客地址&#xff1a;https://blog.csdn.net/qq_41153943 |掘金&#xff1a;https://juejin.cn/user/65…