JComponent 大小与屏幕大小无关

Posted

技术标签:

【中文标题】JComponent 大小与屏幕大小无关【英文标题】:JComponent size independent from screen size 【发布时间】:2015-08-07 18:39:04 【问题描述】:

我的应用程序包含丰富的 JPanel 和其他显示某些内容的 Swing 组件。我希望这些 JComponents 的尺寸独立于屏幕尺寸,例如我的 GUI 在不同的分辨率下都可以。我想在我的代码中做这样的事情

public class myPanel extends JPanel 
 //constructors and other useful methods

@Override
public Dimension getPreferredSize() 
  Dimension screen_size=Toolkit.getDefaultToolkit().getScreenSize();
  return new Dimension (0.50*screen_size.width, 0.30*screen_size.height); 

简而言之,以屏幕尺寸的百分比为 JPanel 提供尺寸。这样好吗?没有快速的方法吗?因为我应该对我使用的每个 JComponent 都这样做。我该怎么办? PS:假设我使用了符合首选尺寸的管理器布局。

【问题讨论】:

您的解决方案有什么问题? “快”是什么意思——执行时间短还是编码时间短? AFAIK 的首选方式是使用布局管理器并让他们决定组件的大小。屏幕大小只会影响窗口大小,布局管理器会将其传播到所有组件。如果您无法使用内置布局管理器执行您想要的操作,请查看 MigLayout 等第三方库,您可以在其中定义面板以占据 50% 的窗口宽度和 30% 的高度。跨度> 【参考方案1】:

布局GridBagLayout 允许您将大小指定为列的权重。如果您这样做并指定所有组件来填充其网格单元格,那么您将获得所需的行为。

例如 3 个组件:

weightx 2, weightx 1, weightx 1

那么第一个组件将始终使用 50% 的窗口,接下来的两个各 25% 的窗口。这也会在您调整窗口大小时自动调整大小,而不仅仅是显示器。

您应该知道,控件内的文本等内容不会随控件自动调整大小。

见:https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

【讨论】:

以上是关于JComponent 大小与屏幕大小无关的主要内容,如果未能解决你的问题,请参考以下文章

Android获取view高度

使网站背景图像适合屏幕大小

页面高度是两个屏幕高度

Android 屏幕适配屏幕适配基础概念 ③ ( 屏幕像素密度 DPI 与素材大小关联 | 屏幕像素密度 DPI 与 屏幕密度限定符关联 )

Android 屏幕适配屏幕适配基础概念 ③ ( 屏幕像素密度 DPI 与素材大小关联 | 屏幕像素密度 DPI 与 屏幕密度限定符关联 )

如何在 React Native 中使 ScrollView 组件大小与屏幕大小成比例?