私は Java で簡単な描画プログラムを書いています。描画する形状と色を選択するための MenuBar (JMenuBar ではありません) があります。Rectangle、Oval、Line のいずれかを選択するキーボード ショートカットを設定したいと考えています。MenuItems に MenuShortcut を使用できることはわかっていますが、これは CheckBoxMenuItems では機能しません。どうすればこれを達成できますか?
質問する
561 次
1 に答える
1
ユーザーが一度に 1 つの要素を描画することを考えると、おそらくこれが必要にJRadioButtonMenuItem
なるでしょう (たとえば、楕円形の線とは何ですか?)。
JRadioButtonMenuItem
加速器があります。例えば
import javax.swing.*;
public class RadioMenuDemo {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JPanel gui = new JPanel();
JMenuBar mb = new JMenuBar();
JMenu shapes = new JMenu("Draw");
mb.add(shapes);
ButtonGroup bg = new ButtonGroup();
shapes.setMnemonic('D');
JRadioButtonMenuItem line = new JRadioButtonMenuItem("Line");
line.setAccelerator(KeyStroke.getKeyStroke("L"));
shapes.add(line);
bg.add(line);
JRadioButtonMenuItem oval = new JRadioButtonMenuItem("Oval");
oval.setAccelerator(KeyStroke.getKeyStroke("O"));
shapes.add(oval);
bg.add(oval);
JRadioButtonMenuItem rect = new JRadioButtonMenuItem("Rectangle");
rect.setAccelerator(KeyStroke.getKeyStroke("R"));
shapes.add(rect);
bg.add(rect);
JFrame f = new JFrame("Radio menu items");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setJMenuBar(mb);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
于 2012-12-10T02:27:31.677 に答える