У меня есть некоторые проблемы с настройкой размера компонента JLabel, вставленного в JToolbar.Я использую JLabel для отображения фактических координат мыши, но в зависимости от длины числа JLabel меняет свой размер, вызывая некоторые неприятные движения моих компонентов JToolbar.
Я играю с setSize, setMinimumSize и т. Д., Чтобы преодолетьэта проблема, но до сих пор нет результатов.Я знаю, что поведение этих методов меняется в соответствии с менеджером компоновки.
Какой правильный метод для определения фиксированного минимального измерения JLabel в JToolbar?
Вот мой код:
public class EditorStatusBar extends JToolBar{
private JLabel areaCoordX;
private JLabel areaCoordY;
public EditorStatusBar(){
super();
addSeparator(new Dimension(100,this.getSize().height));
this.areaCoordX = new JLabel(" ");
this.areaCoordX.setMinimumSize(new Dimension(80,10));
this.areaCoordX.setPreferredSize(new Dimension(80,10));
this.areaCoordX.setHorizontalAlignment(JLabel.RIGHT);
this.areaCoordX.setOpaque(true);
this.areaCoordY = new JLabel("");
this.add(areaCoordX);
this.add(new JLabel(":"));
this.add(areaCoordY);
}
}
public void setCoordOfComponent(Point c){
this.areaCoordX.setText(""+c.x);
this.areaCoordY.setText(""+c.y);
}
}
public class Gui extends JFrame implements ActionListener, ItemListener,ChangeListener{
private EditorStatusBar statusBar;
public static void main(String[] args) {
new Gui();
}
private void buildStatusBar(){
statusBar = new EditorStatusBar();
statusBar.setFloatable(false);
statusBar.setMaximumSize(new Dimension(2000, 20));
}
public Gui() {
super();
getContentPane().setLayout(
new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
buildStatusBar();
this.getContentPane().add(statusBar);
}}
Когда я обновляю значение с помощью setCoordOfComponent (), оно работает, если я установил как минимальный, так и предпочтительный размер, но когда мышь находится, например, над JMenu, размер JPanel уменьшается.