'u kullanmak yerine, gönder düğmesine basmak için izin vermek Swing sınıfını şimdi ve bununla ilgili her şeyi öğreniyorum. Bir araya getirdiğim bu oyuncak programını aldım ve daha sonra "Girmiş (Adınız)" mesajıyla bir JOptionPane sunuyor. Kullandığım gönderme butonu sadece tıklanabilir, ancak Enter tuşu ile de çalışmak istiyorum. Kullanmakta olduğum Java kitabında (Eventful Java, Bruce Danyluk ve Murtagh) önerildiği gibi bir KeyListener eklemeye çalıştım. "Enter" tuşuna, sadece MouseClick
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class NamePrompt extends JFrame{
private static final long serialVersionUID = 1L;
String name;
public NamePrompt(){
setLayout(new BorderLayout());
JLabel enterYourName = new JLabel("Enter Your Name Here:");
JTextField textBoxToEnterName = new JTextField(21);
JPanel panelTop = new JPanel();
panelTop.add(enterYourName);
panelTop.add(textBoxToEnterName);
JButton submit = new JButton("Submit");
submit.addActionListener(new SubmitButton(textBoxToEnterName));
submit.addKeyListener(new SubmitButton(textBoxToEnterName));
JPanel panelBottom = new JPanel();
panelBottom.add(submit);
//Add panelTop to JFrame
add(panelTop, BorderLayout.NORTH);
add(panelBottom, BorderLayout.SOUTH);
//JFrame set-up
setTitle("Name Prompt Program");
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args) {
NamePrompt promptForName = new NamePrompt();
promptForName.setVisible(true);
}
}
Ve bu ActionListener, KeyListener sınıftır:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class SubmitButton implements ActionListener, KeyListener {
JTextField nameInput;
public SubmitButton(JTextField textfield){
nameInput = textfield;
}
@Override
public void actionPerformed(ActionEvent submitClicked) {
Component frame = new JFrame();
JOptionPane.showMessageDialog(frame , "You've Submitted the name " + nameInput.getText());
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("Hello");
}
Component frame = new JFrame();
JOptionPane.showMessageDialog(frame , "You've Submitted the name " + nameInput.getText());
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
}
}
Çalışır! Bunun neden işe yaradığını açıklayabilir misin? Ayrıca, Boşluk tuşu ile basılacak Gönder düğmesini istediysem? (yani, birden fazla düğme varsa) – CodyBugstein
Yeterince temizleyin? Yardım ettiğim için sevindim :) –
Aslında, çözümünüzü uygulamadan önce, iletişim kutusu herhangi bir tuşa (hatta Enter'a) ulaşmadı. Yanlış olan neydi? – CodyBugstein