良い質問。OS Xでこれを試したところ、下線付きの文字も表示されません。あなたと同じように、代替ボタンを押すことでそれらを取得します(クリック時ではなく、ポップアップメニューが表示されたとき)。
ただし、OS XI では、下線付きの文字を含むポップアップを記憶できません。デフォルトのアプリケーションをいくつか確認しましたが、下線付きのポップアップ メニューが表示されるアプリケーションはありませんでした。簡単な Google 検索でもこれが示されました。したがって、この場合、ルック アンド フィールは OS と一致しています。
さらにグーグルで調べた後、Windowsにはデフォルトでニーモニックを非表示にし、altを押したときにのみ表示するオプションがあることを示唆する次のトピックを見つけました(正しく覚えていれば、ニーモニックを使用するにはとにかく押す必要があります私の窓の日)。あなたはそれを試してみたいかもしれません。
とにかく、これはWindowsユーザーがこれをすばやくテストできるSSCCEです。
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPopupMenu;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
public class MnemonicTest {
public static JFrame createUI(){
JFrame testFrame = new JFrame( );
testFrame.add( createLabelWithPopupMenu() );
testFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
testFrame.pack();
return testFrame;
}
private static JLabel createLabelWithPopupMenu(){
JLabel result = new JLabel( "Right-click me" );
result.setComponentPopupMenu( createPopupMenu() );
return result;
}
private static JPopupMenu createPopupMenu(){
JPopupMenu popupMenu = new JPopupMenu( );
popupMenu.add( createAction() );
return popupMenu;
}
private static Action createAction(){
AbstractAction result = new AbstractAction() {
@Override
public void actionPerformed( ActionEvent e ) {
System.out.println( "MnemonicTest.actionPerformed" );
}
};
result.putValue( Action.MNEMONIC_KEY, KeyEvent.VK_A );
result.putValue( Action.NAME, "Action" );
return result;
}
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
createUI().setVisible( true );
}
} );
}
}