java panel适应窗口_如何使JTabbedPane自动调整大小以适应页面尺寸?
我在JFrame中只有JTabbedPane. JTabbedPane将其尺寸设置为最大页面宽度/高度.
由于页面大小不同,是否可以在选择其他页面时强制JTabbedPane更改其尺寸?
最重要的一个是它现在的行为,最底层的是我希望它如何表现(我手工调整大小)
解决方法:
这很简单.它涉及动态计算页面尺寸之间的差异,并使用它们来强制JTabbedPane上的首选大小.我做了一个快速的实验并且有效.所以不是在这里放置大量文本 – 这里是代码.这不完美,但你应该有个主意.当然,欢迎提出问题.
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Test {
private static int maxW = 0;
private static int maxH = 0;
public static void main(String[] args) {
final JFrame f = new JFrame();
final JTabbedPane tabs = new JTabbedPane();
tabs.add( createPanel(Color.RED, 100, 100), "Red");
tabs.add( createPanel(Color.GREEN, 200, 200), "Green");
tabs.add( createPanel(Color.BLUE, 300, 300), "Blue");
final Dimension originalTabsDim = tabs.getPreferredSize();
tabs.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
Component p = ((JTabbedPane) e.getSource()).getSelectedComponent();
Dimension panelDim = p.getPreferredSize();
Dimension nd = new Dimension(
originalTabsDim.width - ( maxW - panelDim.width),
originalTabsDim.height - ( maxH - panelDim.height) );
tabs.setPreferredSize(nd);
f.pack();
}
});
f.setContentPane(tabs);
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
private static final JPanel createPanel( Color color, int w, int h ) {
JPanel p = new JPanel();
p.setBackground(color);
p.setPreferredSize( new Dimension(w, h));
maxW = Math.max(w, maxW);
maxH = Math.max(h, maxH);
return p;
}
}
标签:java,swing,jtabbedpane
来源: https://codeday.me/bug/20190607/1191254.html
java panel适应窗口_如何使JTabbedPane自动调整大小以适应页面尺寸?相关推荐
- 点任务栏不切换窗口_如何使您的任务栏按钮始终切换到最后一个活动窗口
点任务栏不切换窗口 Since Windows 7, apps with multiple open windows are combined into a single taskbar button ...
- java 变量名 字符串_如何使字符串值在java中调用特定的现有JButton变量名?
所以,我知道有这样的: int number = Integer.parseInt("5"); String numtxt = Integer.toString(12); doub ...
- hta 窗口_如何使一个HTA位于屏幕中心(Win32_DesktopMonitor)
我们可以调整(如果需要)窗口大小并使其居中,但这样做时会在屏幕上出现瞬间的闪烁.这并不是太明显,其实际结果就是你所期望的:HTA 会位于屏幕中心.我们希望这个过程变得稍微流畅些,但目前我们不得不使用此 ...
- java 控制台 移动光标_如何使控制台中光标移动到指定位置?
Its_forever package interfaces; import java.util.Scanner; public class Test { public static void mai ...
- java自签名程序_如何使机器信任自签名Java应用程序
我正在部署一个应用程序使用 JAWS,它的工作,直到2013年底,当我得到一个警告,然后今天上午Java完全阻止它.法语的消息是: 应用程序bloquéeparparamètresdesécurité ...
- java 获取活动窗口_用Java获取活动窗口信息
小编典典 减轻您的痛苦,并使用JNA.您将需要下载 Win32 API的 jna.jar 和 jna -platform.jar .该PInvoke的 wiki和MSDN是找到合适的系统调用是有用的. ...
- java 移动其他窗口_移动窗口平均值不等
TL;DR: 无论如何我可以摆脱我的第二个 for -loop? 我在2D网格上有一系列时间点 . 为了消除它们位置的快速波动,我在一个帧窗口上平均坐标 . 现在在我的情况下,它想要包含特定点的帧,如 ...
- java绘制半透明图片_如何使绘制的图像在Java中透明
正如另一个提到的答案,最简单的方法可能是简单地使用具有透明背景的PNG图像(您可以使用像GIMP这样的图像编辑器创建这些图像).或者,如果您仅限于具有纯色背景的PNG图像,以下是如何将PNG中的给定颜 ...
- java panel画椭圆_如何在Java 2D中绘制椭圆?
在Ellipse2D类定义由成帧矩形定义的椭圆.您可以使用double或float值创建椭圆.使用双精度值创建椭圆时,请使用Ellipse2D.Double类.对于浮点值,您可以使用Ellipse2D ...
最新文章
- Mac原生Terminal快速登录ssh
- ORACLE的ASM
- Windows Server 2003 Clustering 服务
- 关于 To B,我欠粉丝们一个热搜
- 最小生成树--prim+优先队列优化模板
- myeclipse试用小记----Hibernate多对一双向关联(2)
- BugkuCTF-WEB题源码
- 华为业务板块_复盘丨华为Mate30发布 电子板块再爆涨停潮
- TFTP服务器在Cisco设备上的应用(上传、下载IOS)
- oracle连接和执行流程总结
- JavaScript 是按值传递还是按引用传递的
- 用python编程、假设一年期定期利率_《Python程序设计》题库.pdf
- python二维数组切片_python语言多维数组切片方法
- 高级c语言程序设计视频教程,C语言高级编程视频教程
- Spring核心模块及功能汇总
- NoteExpress文献题录如何导出到excel
- Qt MDI及其使用方法
- Xcode9 通过无线链接调试,亲测成功
- 美团外卖开放平台对接经验总结(一)
- UVA, 516 Prime Land
热门文章
- Android辅助调试平台
- 2022-2028全球与中国钓鱼器材市场现状及未来发展趋势
- thinkphp5 return 返回空_网红饮品大杯约1/3是空的,店员:是公司设计的中空隔冷层...
- 华为nova7和华为p30pro有什么区别
- 红黑树插入/删除的几种情况,图论,拓扑学杂烩
- 奢侈品电商逐渐落幕?
- 常用的数据分析图表及方法介绍 1
- 白话零知识证明(一)
- Win10 更新补丁后出现“未安装音频设备” 错误 2021-10-14
- 计算机屏幕坐标系转换,计算机图形窗口到视口坐标转换