タブに合うようにJTabbedペインの幅を設定し、私はこのように、隣同士にそれらを持っていると思います: は、どのように私は私のJTabbedPaneで3つのタブを持って
しかし、私はどのように見つけることができませんでしたタブが隣同士に合うなるように自動に、JTabbedPaneの幅を設定するので、私はちょうどこれは主に、それもすべてのシステム上では動作しません、もちろん、多くの問題を抱えているtabs.setPreferredSize(new Dimension(210, 300));
問題点w iタブの名前変更や追加/削除。
したがって、タブ名の幅を計算してsetPrefferedSize()
メソッドに渡すか、さらに良い方法ではsetWidthToFitTabs()
メソッドに渡すのが良い方法はありますか?
EDIT:最小の完全な例:
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Tabs text");
JTabbedPane tabs = new JTabbedPane();
tabs.addTab("Tab1", new JLabel("Content1"));
tabs.addTab("Tab2", new JLabel("Content2"));
tabs.addTab("Tab3", new JLabel("Content3"));
tabs.addTab("Tab4", new JLabel("Content4"));
for (int i = 0; i < tabs.getTabCount(); i++) {
System.out.println(tabs.getUI().getTabBounds(tabs, i));
}
frame.add(tabs);
frame.pack();
frame.setVisible(true);
});
結果:
java.awt.Rectangle[x=2,y=59,width=-8,height=19]
java.awt.Rectangle[x=2,y=40,width=-8,height=19]
java.awt.Rectangle[x=2,y=21,width=-8,height=19]
java.awt.Rectangle[x=2,y=2,width=49,height=19]
を参照してください:ここで
は、(上記のハックで)のgetPreferredSize()メソッドをオーバーライドし、私の実装ですhttp://stackoverflow.com/questions/9636601/tabs-at- jtabbed-in-one-rowの固定ポジション – Bergerリンクありがとうございました。ワーストケースのシナリオで実行可能なソリューションです。私は 'pane.getUI()。getTabBounds(pane、i).width'を試しましたが、最初の2つのタブは' -8'を返します。 3番目のタブだけが正しい幅「65」を持ちます。 – kajacx
あなたの問題を示す[mcve]を投稿してください。 「Java SwingではsetPreferred | Maximum | MinimumSizeの使用を避けるべきですか?」(http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java)を参照してください。 - スイス)、一般的な合意は「はい」と言います。私はこれがレイアウトの問題(またはヌルレイアウトの問題かもしれない)だと思います – Frakcool