Je trouve que si j'ai un JMenuBar
, et le dernier élément de celui-ci (le plus à droite) est un JMenuItem
, il occupera tout l'espace vide restant sur le JMenuBar, ce qui n'est certainement pas ce que nous voulons. Imaginez un élément JMenuItem "About" en tant qu'élément le plus à droite sur un JMenuBar. Il ne devrait occuper que le même espace que les autres menus.Swing - dernier JMenuItem occupe le reste de l'espace sur JMenuBar
Voir mon SSCCE: (cliquez sur le menu et survolez la menuitem à droite pour voir l'effet)
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
public class JMenuItemLastOnMenuBar {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createGUI();
}
});
}
private static void createGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 300, 300);
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Menu 1");
JMenuItem item1 = new JMenuItem("Item 1");
menu.add(item1);
bar.add(menu);
JMenuItem item2 = new JMenuItem("Item 2") {
@Override
public Dimension getPreferredSize() {
return new Dimension(120, 25);
}
};
bar.add(item2);
frame.setJMenuBar(bar);
frame.pack();
frame.setVisible(true);
}
}
** Pourquoi ** est le code remplaçant la taille préférée de 'item2'? –
Vous devez ajouter un séparateur/espaceur à la fin ... –
@AndrewThompson parce que je veux le rendre toujours une taille préférée pour le gestionnaire de disposition à utiliser. Ou autre chose. – FaithReaper