java - JPanel TitledBorder 中的标题截断 - Java swing

标签 java swing jpanel truncation titled-border

我有一个带有 TitledBorder 的 JPanel,但面板的内容比边框中的标题窄,并且标题被截断。 我正在将 BoxLayout 用于 JPanel,如图所示 here注意手动设置宽度。我尝试根据 TitledBorder getMinimumSize() 函数及其组件的宽度设置面板的最小、最大和首选宽度,但都不起作用。唯一有效的方法是使用盒子填充物,但这会产生不需要的压痕。

有什么方法可以显示完整的标题,无论其包含的内容如何?

this.jpCases.setLayout(new javax.swing.BoxLayout(this.jpCases, javax.swing.BoxLayout.LINE_AXIS));
        List<Category> categories = db.getCategories();
        for (Category cat : categories) {
            JPanel jp = new JPanel();
            TitledBorder tb = BorderFactory.createTitledBorder(cat.getDescription());

            jp.setBorder(tb);
            jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
            jp.setAlignmentY(Component.TOP_ALIGNMENT);
            jp.setAlignmentX(Component.LEFT_ALIGNMENT);

            List<Case> cases = db.getCasesByCategoryId(cat.getId());
            for (Case c : cases) {
                JRadioButton jrbCase = new JRadioButton();
                jrbCase.setText(c.getDescription());
                jrbCase.setToolTipText(c.getText());
                jrbCase.setMaximumSize(tb.getMinimumSize(jp));
                bgCases.add(jrbCase);
                jp.add(jrbCase);
            }
        //jp.add(new Box.Filler(tb.getMinimumSize(jp), tb.getMinimumSize(jp), tb.getMinimumSize(jp)));
            this.jpCases.add(jp);
    }

最佳答案

如何计算所需的宽度:

       JRadioButton jrb = new JRadioButton();
       int width = (int) SwingUtilities2.getFontMetrics( jrb, jrb.getFont() ).getStringBounds( cat.getDescription(), null ).getWidth();
       for (Case c : cases) {
            JRadioButton jrbCase = new JRadioButton();
            jrbCase.setText(c.getDescription());
            jrbCase.setToolTipText(c.getText());
            jrbCase.setPreferredSize( new Dimension( width, jrbCase.getPreferredSize().height ) );
            bgCases.add(jrbCase);
            jp.add(jrbCase);
        }

关于java - JPanel TitledBorder 中的标题截断 - Java swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407897/

相关文章:

java - 我应该在哪里保存相关的 jar 以便我在部署应用程序时能够使用它们?

java - 将频率应用于数组中的元素

Java:如何从另一个线程启动 UI 对话框,例如对于身份 validator

Java 按钮未显示在 JFrame 上

java - 更改框架内面板的背景颜色

java - Spring事务管理器不是线程安全的?

Java contains() 与 equals() 不符

java - 使用 Scoll_Tab_Layout 设置 JTabbedPane 中可见选项卡的数量?

java - 线程中出现异常 "AWT-EventQueue-1"java.lang.NullPointerException 错误

java - 如何从另一个类获取 ArrayList 以显示在 JComboBox 中?