我在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自动调整大小以适应页面尺寸?相关推荐

  1. 点任务栏不切换窗口_如何使您的任务栏按钮始终切换到最后一个活动窗口

    点任务栏不切换窗口 Since Windows 7, apps with multiple open windows are combined into a single taskbar button ...

  2. java 变量名 字符串_如何使字符串值在java中调用特定的现有JButton变量名?

    所以,我知道有这样的: int number = Integer.parseInt("5"); String numtxt = Integer.toString(12); doub ...

  3. hta 窗口_如何使一个HTA位于屏幕中心(Win32_DesktopMonitor)

    我们可以调整(如果需要)窗口大小并使其居中,但这样做时会在屏幕上出现瞬间的闪烁.这并不是太明显,其实际结果就是你所期望的:HTA 会位于屏幕中心.我们希望这个过程变得稍微流畅些,但目前我们不得不使用此 ...

  4. java 控制台 移动光标_如何使控制台中光标移动到指定位置?

    Its_forever package interfaces; import java.util.Scanner; public class Test { public static void mai ...

  5. java自签名程序_如何使机器信任自签名Java应用程序

    我正在部署一个应用程序使用 JAWS,它的工作,直到2013年底,当我得到一个警告,然后今天上午Java完全阻止它.法语的消息是: 应用程序bloquéeparparamètresdesécurité ...

  6. java 获取活动窗口_用Java获取活动窗口信息

    小编典典 减轻您的痛苦,并使用JNA.您将需要下载 Win32 API的 jna.jar 和 jna -platform.jar .该PInvoke的 wiki和MSDN是找到合适的系统调用是有用的. ...

  7. java 移动其他窗口_移动窗口平均值不等

    TL;DR: 无论如何我可以摆脱我的第二个 for -loop? 我在2D网格上有一系列时间点 . 为了消除它们位置的快速波动,我在一个帧窗口上平均坐标 . 现在在我的情况下,它想要包含特定点的帧,如 ...

  8. java绘制半透明图片_如何使绘制的图像在Java中透明

    正如另一个提到的答案,最简单的方法可能是简单地使用具有透明背景的PNG图像(您可以使用像GIMP这样的图像编辑器创建这些图像).或者,如果您仅限于具有纯色背景的PNG图像,以下是如何将PNG中的给定颜 ...

  9. java panel画椭圆_如何在Java 2D中绘制椭圆?

    在Ellipse2D类定义由成帧矩形定义的椭圆.您可以使用double或float值创建椭圆.使用双精度值创建椭圆时,请使用Ellipse2D.Double类.对于浮点值,您可以使用Ellipse2D ...

最新文章

  1. Mac原生Terminal快速登录ssh
  2. ORACLE的ASM
  3. Windows Server 2003 Clustering 服务
  4. 关于 To B,我欠粉丝们一个热搜
  5. 最小生成树--prim+优先队列优化模板
  6. myeclipse试用小记----Hibernate多对一双向关联(2)
  7. BugkuCTF-WEB题源码
  8. 华为业务板块_复盘丨华为Mate30发布 电子板块再爆涨停潮
  9. TFTP服务器在Cisco设备上的应用(上传、下载IOS)
  10. oracle连接和执行流程总结
  11. JavaScript 是按值传递还是按引用传递的
  12. 用python编程、假设一年期定期利率_《Python程序设计》题库.pdf
  13. python二维数组切片_python语言多维数组切片方法
  14. 高级c语言程序设计视频教程,C语言高级编程视频教程
  15. Spring核心模块及功能汇总
  16. NoteExpress文献题录如何导出到excel
  17. Qt MDI及其使用方法
  18. Xcode9 通过无线链接调试,亲测成功
  19. 美团外卖开放平台对接经验总结(一)
  20. UVA, 516 Prime Land

热门文章

  1. Android辅助调试平台
  2. 2022-2028全球与中国钓鱼器材市场现状及未来发展趋势
  3. thinkphp5 return 返回空_网红饮品大杯约1/3是空的,店员:是公司设计的中空隔冷层...
  4. 华为nova7和华为p30pro有什么区别
  5. 红黑树插入/删除的几种情况,图论,拓扑学杂烩
  6. 奢侈品电商逐渐落幕?
  7. 常用的数据分析图表及方法介绍 1
  8. 白话零知识证明(一)
  9. Win10 更新补丁后出现“未安装音频设备” 错误 2021-10-14
  10. 计算机屏幕坐标系转换,计算机图形窗口到视口坐标转换