相关疑难解决方法(0)

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

错误或功能:Win6 +的Swing默认gui字体不正确

只是(令人惊讶地;-)注意到应用程序在我的win6 +机器上看起来如此拥挤的原因(同样适用于Vista和Win7,都有120dpi设置,jdk6和jdk7):从桌面属性查找的控件字体都有错误的字体家庭和错误的大小:

public static void main(String[] args) {
    Font guiFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty("win.defaultGUI.font");
    int guiSize = guiFont.getSize();
    Font iconFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty("win.icon.font");
    System.out.println("gui default: " + guiFont + "\nicon default: " + iconFont);
}
Run Code Online (Sandbox Code Playgroud)

输出:

gui default: java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
icon default: java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15] 
Run Code Online (Sandbox Code Playgroud)

后者几乎用于所有文本的本机应用程序,而Swing使用前者...

问题:

  • 可能有任何理由,或只是一个错误?
  • 谁负责:Swing查找(从相关系统资源读取desktopProperty时)或操作系统没有正确报告?
  • 如何强制使用后者?

解决最后一个的选项:

  • 通过完全控制LAF,人们可能会考虑设置所有相关的文本字体(这就是JGoodies的功能,并将其纳入FontPolicy/Set).
  • 一个脏的hack是将defaultGUI桌面属性的值设置为正确的值 - 它涉及对工具包的反射访问,这自然会在安全受限的上下文中发挥作用.
  • ??

编辑

万一有人感兴趣,这是肮脏的黑客:

/**
 * Replaces the default gui desktop font property with the icon font
 * if the former is smaller.
 * 
 */
public static void …
Run Code Online (Sandbox Code Playgroud)

java fonts swing windows-7

16
推荐指数
1
解决办法
2259
查看次数

标签 统计

java ×2

swing ×2

fonts ×1

layout-manager ×1

windows-7 ×1