Java实现窗体分区,一个JPanel面板,一个JScrollPane面板

2024-03-13 12:38

本文主要是介绍Java实现窗体分区,一个JPanel面板,一个JScrollPane面板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近由于使用需要,要将一个窗体分为两部分,两个部分相互独立,一部分是普通面板(JPanel),另外一部分是滚动面板(JScrollPane)。效果类似于eclipse的代码区和结果区。

查了资料后知道可以使用JSplitPane进行窗格拆分。

因为当时看到的例子是将两个普通面板拆分,然后我的第一想法是将滚动面板加到普通面板中,想到了就做,我试了好多次,发现一只没有滚动条。然后又查了相关原因:

在滚动面板中加入的JPanel或者JTextArea等组件,在预设置(setPreferredSize(new Dimension())其大小的时候要大于滚动面板组件的大小,在效果刚出来的时候才会显示滚动条。 如果开始组件的大小没有滚动面板的大,到了后续使用过程中内容超出范围的时候应该会出现滚动条。  所以滚动条出现的条件是滚动面板中的内容大小超出了滚动面板的大小。

我按照这种预设置方式进行了尝试,发现还是没有滚动条,然后又去搜了一些,没有找到。

等我找了很久之后,突然醒悟,为什么不能直接将JScrollPane替换成两个JPanel中的一个。。。  这样试了,果然就行了。(这脑子啊,不灵活的时候很费时间的。)

下面给个例子:

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;public class SplitPane1 extends JFrame{JPanel jp1=new JPanel();JScrollPane jscrollPane;JTextArea  jtf=new JTextArea();int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;SplitPane1(){jtf.setPreferredSize(new Dimension(400,300));//预设置JTextArea的大小Container container = getContentPane();jscrollPane = new JScrollPane(jtf);jscrollPane.setSize(300,200);//将jp1和jscrollPane两个面板在窗体中分割成上下两部分JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jp1, jscrollPane);container.add(splitPane,BorderLayout.CENTER);pack();this.setSize(screenWidth/2,screenHeight/2);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);splitPane.setDividerLocation(0.7);//设置分割线位置}public static void main(String[] args) {new SplitPane1();}
}

 

这篇关于Java实现窗体分区,一个JPanel面板,一个JScrollPane面板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804909

相关文章

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

9个SpringBoot中的自带实用过滤器使用详解

《9个SpringBoot中的自带实用过滤器使用详解》在SpringBoot应用中,过滤器(Filter)是处理HTTP请求和响应的重要组件,SpringBoot自带了许多实用的过滤器,如字符编码,跨... 目录1. CharacterEncodingFilter - 字符编码过滤器功能和配置手动配置示例2

基于Redis实现附近商铺查询功能

《基于Redis实现附近商铺查询功能》:本文主要介绍基于Redis实现-附近商铺查询功能,这个功能将使用到Redis中的GEO这种数据结构来实现,需要的朋友可以参考下... 目录基于Redis实现-附近查询1.GEO相关命令2.使用GEO来实现以下功能3.使用Java实现简China编程单的附近商铺查询4.Red