簡體   English   中英

如何在java swing中添加助記符?

[英]How do I add mnemonics in java swing?

所以我有一個問候程序,旁邊有3個JTextfields和3個JLabel,我想添加助記符,我相信這是JTextField旁邊的JLabel中其中一個字母下面的小寫下划線。 當用戶按下Alt +帶下划線的鍵時,光標將轉到它旁邊的JTextfield。 這是我的代碼,所以只顯示沒有助記符的簡單問候語

import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GreetingApp extends JFrame {
    private static final long serialVersionUID = 1L;
    private final JTextField firstNameField,middleNameField,lastNameField;
    private final JButton greetingButton;
    public GreetingApp() {
        super("Greetings");
        this.firstNameField = new JTextField(8);
        this.middleNameField = new JTextField(8);
        this.lastNameField = new JTextField(8);
        this.greetingButton = new JButton("Get Greeting"); 

        greetingButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(final ActionEvent ae){
                showGreeting();
            }
        });
        final Container mainPanel = getContentPane();
        mainPanel.setLayout(new BorderLayout());
        final JPanel inputPanel = new JPanel();
        final JPanel buttonPanel = new JPanel();
        inputPanel.setLayout(new GridLayout(3,3,3,5));
        buttonPanel.setLayout(new FlowLayout());
        JSeparator sep = new JSeparator();
        inputPanel.add(new JLabel("First Name: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(firstNameField);
        inputPanel.add(new JLabel("MI: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(middleNameField);
        inputPanel.add(new JLabel("Last Name: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(lastNameField);
        mainPanel.add(inputPanel,BorderLayout.PAGE_START);
        //buttonPanel.add(sep,BorderLayout.PAGE_START);
        mainPanel.add(sep,BorderLayout.CENTER);
        buttonPanel.add(greetingButton);
        mainPanel.add(buttonPanel,BorderLayout.PAGE_END);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    private String getFullName() throws IllegalStateException{
        if(firstNameField.getText().trim().length() == 0){
            throw new IllegalArgumentException("First name cannot be blank");
        }

        if(middleNameField.getText().trim().length() > 1){
            throw new IllegalArgumentException("Middle intial cannot be greater than 1 letter");
        }
        if(lastNameField.getText().trim().length() == 0){
            throw new IllegalArgumentException("Last name cannot be blank");
        }
        if(middleNameField.getText().trim().length() ==0){
            return "Greetings, "+this.firstNameField.getText()+" "+ this.middleNameField.getText() +this.lastNameField.getText()+"!";
        }
        return "Greetings, "+this.firstNameField.getText()+" "+ this.middleNameField.getText()+"."+this.lastNameField.getText()+"!";
    }
    private void showGreeting(){

        try{
            String message = getFullName();
            JOptionPane.showMessageDialog(this, message);
       }catch(final IllegalArgumentException iae){
           JOptionPane.showMessageDialog(this,
                   iae.getMessage(),
                   "Error",
                   JOptionPane.ERROR_MESSAGE);
       }

    }
    public static void main(String[] args) {
        try{
            for(LookAndFeelInfo info:UIManager.getInstalledLookAndFeels()){
                if("Nimbus".equals(info.getName())){
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        }catch(Exception e){
            e.getStackTrace();
        }
    }
}

如果您的JLabel被稱為label並且您的JTextField被稱為textField

label.setDisplayedMnemonic(KeyEvent.VK_N); //replace .VK_N with the appropriate key

將助記符放在標簽上,並且:

label.setLabelFor(textField);

將該標簽(及其助記符)與相應的文本字段相關聯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM