Sorry this went so long without a reply.
> Is there a way to ask Java would the right keyboard shortcut should
be?
Yes. Try:
int modifier = Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()
A sample usage is below.
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.KeyEvent;
public class ShortcutDemo extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ShortcutDemo d = new ShortcutDemo();
d.pack();
d.setVisible(true);
}
});
}
public ShortcutDemo() {
JMenuBar menuBar = new JMenuBar();
JMenu editMenu = new JMenu("Edit");
JMenuItem copyMenuItem = new JMenuItem("Copy");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
menuBar.add(editMenu);
editMenu.add(copyMenuItem);
setJMenuBar(menuBar);
JLabel label = new JLabel("Placeholder Label");
label.setBorder(new EmptyBorder(20,20,20,20));
getContentPane().add(label);
}
}
Does this answer your question?
Regards,
- Jeremy
------ Original Message ------
From [email protected]
To [email protected]
Date 2/7/24, 2:47:55 PM
Subject how to get find out the keyboard shortcut for the paste action?
Some swing components such as text fields have built in support for
copy and paste.
But if you want to add such support for a component that doesn’t, then
one of the things you might want to do is support standard keyboard
shortcuts.
Luckily, there’s a tutorial for doing this kind of thing, let’s see how
they do it:
https://docs.oracle.com/javase/tutorial/uiswing/dnd/listpaste.html
Uh oh…
getKeyStroke("ctrl V")
The tutorial simply hardcodes the relevant shortcuts.
I suspect that this works fine on windows, and will lead Mac users to
grumble.
Is there a way to ask Java would the right keyboard shortcut should be?
I suppose one could always create a scratch text field just to look
through its input map, but seems a bit hacky.
This message is for information purposes only. It is not a
recommendation, advice, offer or solicitation to buy or sell a product
or service, nor an official confirmation of any transaction. It is
directed at persons who are professionals and is intended for the
recipient(s) only. It is not directed at retail customers. This message
is subject to the terms at:
https://www.cib.barclays/disclosures/web-and-email-disclaimer.html.
For important disclosures, please see:
https://www.cib.barclays/disclosures/sales-and-trading-disclaimer.html
regarding marketing commentary from Barclays Sales and/or Trading
desks, who are active market participants;
https://www.cib.barclays/disclosures/barclays-global-markets-disclosures.html
regarding our standard terms for Barclays Corporate and Investment Bank
where we trade with you in principal-to-principal wholesale markets
transactions; and in respect to Barclays Research, including
disclosures relating to specific issuers, see:
http://publicresearch.barclays.com.
__________________________________________________________________________________
If you are incorporated or operating in Australia, read these important
disclosures:
https://www.cib.barclays/disclosures/important-disclosures-asia-pacific.html.
__________________________________________________________________________________
For more details about how we use personal information, see our privacy
notice:
https://www.cib.barclays/disclosures/personal-information-use.html.
__________________________________________________________________________________