java swing 学习
JSplitPane固定分割比例和禁止拖动分割条
有知友问JSplitPane的问题,在写代码的时候不想让分割条拖动,结果找不到方法,百度了 居然也找不到...
后来在一个犄角旮旯里发现了 ,, 就写上来让大家看看吧...
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
public class Test {
public static void main(String[] args) {
JFrame frame=new JFrame("Test");
final JSplitPane jsp=new JSplitPane();
frame.add(jsp);
frame.setLocation(200,200);
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jsp.setEnabled(false);//进制拖动分割条
frame.setVisible(true);
frame.addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e) {
jsp.setDividerLocation(0.67);
}
});
jsp.setDividerLocation(0.67);//设置分割比例,注意必须在frame.setVisible(true);之后才有效.. 理由看下边..
}
}
理由:
setDividerLocationpublic void setDividerLocation(double proportionalLocation)
- 设置分隔条的位置为 JSplitPane 大小的一个百分比。
根据 setDividerLocation(int) 来实现此方法。此方法以分隔窗格的当前大小为基础迅速改变窗格的大小。如果分隔窗格没有正确地实现并且不显示在屏幕上,此方法将不产生任何影响(新的分隔条位置将成为 0(当前的 size * proportionalLocation ))。
-
- 参数:
- proportionalLocation - 指示百分比的双精度浮点值,从 0 (top/left) 到 1.0 (bottom/right)
- 抛出:
- IllegalArgumentException -
如果指定的位置为 < 0 or > 1.0
看完后没什么概念。。。只觉得写的不是那么直白,也许确有什么猫腻在里边。特别是"如果分隔窗格没有正确地实现并且不显示在屏幕上,此方法将不产生任何影响"这句,没大理解。。。
因而去看看JSplitPane的源码。关于setDividerLocation大致如下:
public void setDividerLocation(double proportionalLocation) {
if (proportionalLocation < 0.0 ||
proportionalLocation > 1.0) {
throw new IllegalArgumentException("proportional location must " +
"be between 0.0 and 1.0.");
}
if (getOrientation() == VERTICAL_SPLIT) {
setDividerLocation((int)((double)(getHeight() - getDividerSize()) *
proportionalLocation));
} else {
setDividerLocation((int)((double)(getWidth() - getDividerSize()) *
proportionalLocation));
}
}
这下有些明白了,setDividerLocation(double)这个函数会用到getWidth()或者getHeight()这样的函数,而java桌面程序在没有主窗体setVisible之前,如果使用布局,尚未validate()和paint()每个组件的宽和高默认都是0。也就是说一定要在主窗体setVisible(true)之后再使用setDividerLocation(double)才会有效。
- 1.设置窗口最大(伪最大化)
- JFrame frame =new JFrame();
- frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
- frame.setLocation(0,0);
- frame.show();
- 2.设置最大化(JDK1.4以上)
- JFrame frame =new JFrame();
- frame.show();
- frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
- 3.设置全屏模式
- GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame);
java swing 学习的更多相关文章
- Java Swing学习
在Java学习的过程中,我们时常会因为控制台程序的枯燥而失去了学习Java的乐趣,那么今天我们就开始学习Java的Swing.也就是GUI(Graphical user interface),在应用到 ...
- Java Swing学习笔记——创建JFrame
创建显示一个空JFrame import javax.swing.JFrame; public class JFrameDemo extends JFrame{ public JFrameDemo() ...
- Java Swing 资料(转载学习)
Swing图像界面简介:https://blog.csdn.net/xietansheng/article/details/72814531 Swing实用经验总结篇:https://blog.csd ...
- Java swing项目-图书管理系统(swing+mysql+jdbc) 总结
(一)java Swing的学习. (1)学习如何安装windowbuilder插件的安装. <1>在eclipse中点击help <2>在help的下拉选中选择install ...
- Java Swing快速构建窗体应用程序
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
- Java Swing的进化
摘 要:Swing已是一个比较老的工具集了,在美观的用户界面出来之前需要开发很长时间.它缺少一些你在开发富UI时所需的组件.幸运地是,像 Substance,SwingX及Java Look-and_ ...
- Java Swing界面编程(1)
写多了jsp,对于页面式的系统已经写烦了,本人也開始着手于java swing的学习,作为菜鸟,仅想用博客记录下我的swing学习的历程.话不多说,首先開始我的第一个窗体化程序. 下面给出源码: pa ...
- Java Swing 使用总结(转载)
随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在 ...
- 客户端是选择Java Swing还是C# Winform
登录|注册 mentat的专栏 目录视图 摘要视图 订阅 [专家问答]韦玮:Python基础编程实战专题 [知识库]Swift资源大集合 [公告]博客新皮肤上线啦 ...
- Swing学习1——总体概述
以下来自于JDK1.6 一.Swing学习我划分为两个方面: 一方面Swing的界面设计部分,包括相关组件类的继承关系,组件的功能用途,布局管理: 1.首先继承关系上自上而下为 java.lang.O ...
随机推荐
- java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator 问题解决
目录 报错情况 分析原因 解决方法 本文author:@愷龍 报错情况 在一次使用JSP的jstl时候按照正常引入jstl和使用for each标签出现了如下报错: 分析原因 经过一番调查研究发现原因 ...
- 【YashanDB知识库】ycm托管数据库时,数据库非OM安装无法托管
问题现象 ps -ef | grep yas 查看无yasom和yasagent进程,且在{数据库安装目录}/om/{数据库名称}的目录下没有conf.data.log等目录,确定数据库不是用yasb ...
- 一个开源、跨平台的.NET UI框架 - Avalonia UI
前言 今天大姚给大家分享一个开源.免费(MIT License).跨平台的.NET UI框架:Avalonia UI. Avalonia是一个成熟稳定的平台,用于构建桌面.嵌入式.移动的和Web应用程 ...
- Mybatis整合多数据源
背景 有时候我们需要查询来自多个库表的数据内容,但是又不想起多个服务,可以业务需要这些数据那该怎么办呢?那么其实Mybatis 是支持整合多数据源,并随时进行切换. 解决 引入依赖 首先引入dyn ...
- docker基础镜像java版本选择和推荐
背景 在编写dockerfile时,基础镜像要么太大,要么缺少jdk:dockerhub中的openjdk五花八门,不知道选择哪个 解决方案 我在项目中通常选择 openjdk作为基础镜像 FROM ...
- 手搓大模型Task01:LLama3模型讲解
前言 主要进行Qwen模型架构进行讲解. 1.Qwen整体介绍 Qwen的整体架构与Llama2类似,如下图所示: tokenizer将文本转为词表里面的数值. 数值经过embedding得到 ...
- 能用到“退休”的 600条 Linux 命令,可以解决日常99%的问题~
1.基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/ ...
- 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)
七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) @ 目录 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) ...
- Android Qcom USB Driver学习(三)
usb hub区分端口 USB 子系统拓扑浅析 USB ID Database VendorID and ProductID usb usb1: New USB device found, idVen ...
- 谈一谈 vuex 里边,actions,mutations ,state 之间的运转方式
首先,调用 actions 中的方法,一般我们在 actions 做登录和登出的请求 : 然后调用 mutations 的方法修改数据 ,因为 mutations 方法是修改state的数据的唯一方法 ...