2013-04-29 8 views
5

私は3つのJTextfieldsと3つのJLabelの横にある挨拶プログラムを持っていて、ニーモニックを追加したいと思います。これはJTextFieldの隣にあるJLabelの文字の下にある小さな下線です。ユーザーがAlt +下線キーを押すと、カーソルはその横のJTextフィールドに移動します。Java Swingでニーモニックを追加するにはどうすればよいですか?

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

は、ラベルにニーモニックを置き、そしてう:ちょうどニーモニックあなたのJLabelがlabel呼び出された場合

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(); 
     } 
    } 
} 
+0

ここで行ったように、大きな、有用な部分は編集しないでください。ここでの質問と回答は、将来の読者を助けるためのものです。他の人があなたの投稿から情報を得ることを望まないなら、ここに投稿しないでください。 –

答えて

7

せずに、簡単な挨拶を示し、あなたのJTextFieldがtextFieldと呼ばれているように、ここに私のコードは次のとおりです。

label.setLabelFor(textField); 

は、適切なテキストフィールドとそのラベル(およびそのニーモニック)を関連付けます

+1

また、文字をsetDisplayedMnemonic()およびキーコードに渡すこともできます。また、ボタンでアクションを使用している場合は、ニーモニック、アクセラレータ、およびツールチップをアクションのコンストラクタで定義できます。 –

+3

+1のsetLabelFor(...)メソッド。 – camickr

+0

@EdwardFalk確かに。 – drewmoore

関連する問題