【问题标题】:Handling overflowing components in swing在摆动中处理溢出的组件
【发布时间】:2009-05-21 14:39:48
【问题描述】:

在我的应用程序中,我有一些较长的标签,在中文操作系统上,标签也会溢出并推出其他组件。这仅在中文操作系统上观察到。如何检测和处理溢出的组件?

【问题讨论】:

    标签: java swing


    【解决方案1】:

    JComponent 有一个setMaximumSize 方法可以帮助您。根据您使用的 LayoutManager,结果可能会有所不同。要在布局级别设置这样的约束,请查看SpringLayout

    【讨论】:

      【解决方案2】:

      我猜这对某些人来说是个问题,具体取决于窗口大小和语言。

      也许不是你想要的,但你可以像这样检查文本的大小:

      // get metrics from the graphics
      FontMetrics metrics = graphics.getFontMetrics(font);
      // get the height of a line of text in this font and render context
      int hgt = metrics.getHeight();
      // get the advance of my text in this font and render context
      int adv = metrics.stringWidth(text);
      

      如果文本长度超过限制(您必须摆脱困境),您可以截断甚至缩写它 - 如果它是已知的,或者可能将其替换为图标并使用工具提示来显示全文。

      【讨论】:

      • 这是我的最佳解决方案。有一个标签溢出,但也有一个标题边框溢出。因此,使用 myComponent.getFontMetrics(font) 并在超过一定长度时插入工具提示效果很好,尽管并不理想。
      【解决方案3】:

      您可以通过一些额外的代码使 JTextArea 表现得像一个标签,但它会根据需要将文本换行,而不是使用省略号 (...) 进行缩写。设计您的 UI 时要考虑到包装。

      JTextArea label = new JTextArea();
      label.setText( text );
      label.setWrapStyleWord( true );
      label.setLineWrap( true );
      label.setEnabled( false );
      label.setOpaque( false );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        • 2022-10-04
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        相关资源
        最近更新 更多