2

私は Java で簡単な描画プログラムを書いています。描画する形状と色を選択するための MenuBar (JMenuBar ではありません) があります。Rectangle、Oval、Line のいずれかを選択するキーボード ショートカットを設定したいと考えています。MenuItems に MenuShortcut を使用できることはわかっていますが、これは CheckBoxMenuItems では機能しません。どうすればこれを達成できますか?

4

1 に答える 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 に答える