JMENUITEM CUSTICHE in Java
Domanda
Sarebbe possibile creare un'usanza JMenuItem
che contiene pulsanti? Ad esempio sarebbe possibile creare un JMenuITem
con un articolo simile a questo:
+----------------------------------------+
| JMenuItem [ Button | Button | Button ] |
+----------------------------------------+
Soluzione
Dubito che ci sia un modo semplice per farlo. Puoi fare qualcosa come:
JMenuItem item = new JMenuItem("Edit ");
item.setLayout( new FlowLayout(FlowLayout.RIGHT, 5, 0) );
JButton copy = new JButton("Copy");
copy.setMargin(new Insets(0, 2, 0, 2) );
item.add( copy );
menu.add( item );
Ma ci sono diversi problemi:
a) Il menu non si chiude quando si fa clic sul pulsante. In modo che il codice dovrebbe essere aggiunto al tuo listener
b) La voce di menu non risponde a eventi chiave come la freccia sinistra/destra, quindi non c'è modo di concentrarsi sul pulsante usando la tastiera. Ciò comporterebbe modifiche all'interfaccia utente nella voce di menu e non ho idea di dove iniziare.
Userei solo il design dell'interfaccia utente standard e i menu secondari di creare.
Altri suggerimenti
Sono sicuro che ci sia, come personalmente userei singoli menuuitims e mettendoli fianco a fianco e ho un ascoltatore di azione per ogni singolo pulsante. La parte difficile sarebbe metterli in un contenitore come un jpanel e metterli in un layout di flusso o un layout della griglia
Vecchia domanda, ma puoi farlo abbastanza facilmente con un jtoolbar ...
//Make a popup menu with one menu item
final JPopupMenu popupMenu = new JPopupMenu();
JMenuItem menuItem = new JMenuItem();
//The panel contains the custom buttons
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
panel.setAlignmentX(Component.LEFT_ALIGNMENT);
panel.add(Box.createHorizontalGlue());
JToolBar toolBar = new JToolBar();
JButton toolBarButton = new JButton();
toolBarButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
popupMenu.setVisible(false); //hide the popup menu
//other actions
}
});
toolBar.setFloatable(false);
toolBar.add(toolBarButton);
panel.add(toolBar);
//Put it all together
menuItem.add(panel);
menuItem.setPreferredSize(new Dimension(menuItem.getPreferredSize().width, panel.getPreferredSize().height)); //do this if your buttons are tall
popupMenu.add(menuItem);