Ich habe einige Probleme bei der Einstellung der Größe einer JLabel-Komponente, die in eine JToolbar eingefügt wurde. Ich verwende die JLabel, um tatsächliche Maus-Koordinaten anzuzeigen, aber je nach der Länge der Zahl JLabel ändern es ist Größe produzieren einige böse Bewegungen meiner JToolbar-Komponenten.
Ich spiele mit setSize, setMinimumSize, etc, um dieses Problem zu überwinden, aber immer noch keine Ergebnisse. Ich weiß, dass das Verhalten dieser Methoden entsprechend dem Layout-Manager zu ändern.
Welches ist die richtige Methode, um eine feste Mindestgröße für ein JLabel in einer JToolbar zu definieren?
Hier ist mein Code:
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);
}}
Wenn ich den Wert mit setCoordOfComponent() aktualisiere, funktioniert es, wenn ich sowohl die minimale als auch die bevorzugte Größe einstelle, aber wenn die Maus zum Beispiel über dem JMenu ist, verringert sich die Größe des JPanels.