2013-04-29 8 views
5

तो मेरे पास 3 जेटीक्स्टफील्ड और 3 जेएलबेल के साथ एक ग्रीटिंग प्रोग्राम है और मैं उनके पास जेनोक्स्टफाइल जोड़ना चाहता हूं, जो मुझे लगता है कि जेएलएक्स्टफिल्ड के बगल में जेएलएबल में अक्षरों में से एक के नीचे छोटी रेखांकन है। जब उपयोगकर्ता Alt + रेखांकित कुंजी दबाता है, तो कर्सर इसके आगे जेटीक्स्टफील्ड में जाएगा।मैं जावा स्विंग में निमोनिक्स कैसे जोड़ूं?

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

लेबल पर स्मरक रखें, और होगा: यहाँ मेरी कोड ताकि सिर्फ स्मृति सहायकों

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

अपने JLabel label कहा जाता है के बिना सरल ग्रीटिंग से पता चलता है और अपने JTextField textField कहा जाता है:

label.setLabelFor(textField); 

उचित पाठ क्षेत्र के साथ उस लेबल (और उसके स्मरक) से संबद्ध कर देगा

+1

आप एक चरित्र को setDisplayedMnemonic() के साथ-साथ एक कीकोड भी पास कर सकते हैं। साथ ही, यदि आप अपने बटन के साथ एक क्रिया का उपयोग कर रहे हैं, तो आप एक्शन के कन्स्ट्रक्टर में स्नेही, त्वरक, और टूलटिप को परिभाषित कर सकते हैं। SetLabelFor (...) विधि के लिए –

+3

+1। – camickr

+0

@EdwardFalk वास्तव में। – drewmoore

संबंधित मुद्दे