TitledBorderのJPanelを持っていますが、パネルの内容が境界線のタイトルよりも狭く、タイトルが切り捨てられます。ここに示されているように、幅の手動設定に注意を払っているJPanelにBoxLayoutを使用しています。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);
}