ОК, несколько вопросов о тестовом коде ниже ... У меня нет полной рабочей программы для публикации, но я надеюсь, что люди знают Swing достаточно хорошо, чтобы взять удар на него. Это JLabel внутри JPanel (BoxLayout), и я работаю над калибровкой метки в правом нижнем углу.Взаимодействие компонентов Java Swing (BoxLayout и Label)
То, что я получаю с кодом, как показано, представляет собой поле статуса 300 шириной на 30 высоты. Я искал предпочтительный размер и минимальный размер этикетки, и он, похоже, не ведет себя рационально.
- Почему JPanel Preferred Size влияет на высоту, но не на ширину ? Если я изменил размер x в setPreferredSize() на 0 или 500, он все равно выйдет 300 из метки.
- Почему минимальный размер JLabel влияет на ширину, но не на высоту ? Если я прокомментирую вызов setPreferredSize() и увеличу высоту метки до 30, ничего не произойдет.
- Я начал с JPanel setMinimumSize (прокомментировал), но у него больше нет эффекта . Почему 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;
}
Не показывайте нам «полную программу», но на том же токене отправляете * небольшую * программу, которая компилирует и запускает и демонстрирует проблему, [sscce] (http://sscce.org) поможет нам быть намного лучше, чтобы помочь вам. –
@orbfish пожалуйста, что нового 'Dimension (5000,0)));' сколько (я могу сосчитать три) монитора, которые вы хотите нарисовать, и с нулевой высотой – mKorbel
@HovercraftFullOfEels - кажется, новая религия sscce, люди держат ссылаясь на него. Я сказал, что не могу опубликовать рабочую программу. – orbfish