OK、以下のテストコードに関するいくつかの質問...投稿する完全なプログラムはありませんが、Swingを十分に理解してそれを試してもらいたいと思っています。これはJPanel(BoxLayout)内のJLabelであり、右下のラベルのサイズ設定に取り組んでいます。
示されているコードで得られるのは、幅300×高さ30のステータスボックスです。推奨サイズとラベルの最小サイズをいじりましたが、合理的な動作をしていないようです。
- JPanelの推奨サイズが高さに影響するのに幅には影響しないのはなぜですか?setPreferredSize()のxディメンションを0または500に変更しても、ラベルから300になります。
- JLabelの最小サイズが幅に影響するのに高さには影響しないのはなぜですか?setPreferredSize()呼び出しにコメントを付け、ラベルの高さを30に増やしても、何も起こりません。
- 私はJPanelsetMinimumSize(コメント付き)から始めましたが、効果がなくなりました-なぜJPanelにsetPreferredSize()が必要なのですか?
- ラベルテキストを「」から「」に変更すると、ラベルの高さが高くなります。ここではラベルが高さを制御していないのに、なぜこれがまったく効果がないのですか?
ちなみに、createRigidArea()呼び出しは、画面の左側に固定するのではなく、セパレータを右側に強制することです。これについてもっと厄介なアイデアがあれば、私は感謝するでしょう。
private JComponent makeStatusBarTest() {
JPanel statusPanel = new JPanel();
statusPanel.setLayout(new BoxLayout(statusPanel, BoxLayout.LINE_AXIS));
statusPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
// statusPanel.setMinimumSize(new Dimension(0, 30));
statusPanel.setPreferredSize(new Dimension(500, 30));
JLabel statusLabel = new JLabel();
Border emptyBorder = BorderFactory.createEmptyBorder(5, 10, 5, 10);
statusLabel.setBorder(emptyBorder);
statusLabel.setText("");
statusLabel.setMinimumSize(new Dimension(300, 20));
statusPanel.add(statusLabel);
statusPanel.add(new JSeparator(SwingConstants.VERTICAL));
statusPanel.add(Box.createRigidArea(new Dimension(5000,0)));
return statusPanel;
}