“是写作一样简单:
if (e.getSource()=='querybutton' || e.getSource=='enter')"
这不是简单的写这个,但而这是错误的写。
对于一个你不想用==比较字符串,另一方面,你没有用单引号声明字符串,第三,不是以这种方式获得回车键,而是通过向JTextField本身添加适当的ActionListener对象,最后应该有一个处理这个动作的ActionListener类,所以if块是完全不必要的。这可能最好用一个小的内部专用ActionListener类完成。然后,您将创建该类的一个对象,并将其添加为查询按钮和JTextField的ActionListener。
编辑1:
我的意思如下图所示,具有专用内部处理类演示类更完整的示例:
import java.awt.event.*;
import javax.swing.*;
public class ActionListenerEg extends JPanel {
private JButton queryButton = new JButton("Query");
private JTextField textField = new JTextField("hello", 20);
public ActionListenerEg() {
QueryListener qListener = new QueryListener();
queryButton.addActionListener(qListener);
textField.addActionListener(qListener);
add(queryButton);
add(textField);
}
private class QueryListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
String textInField = textField.getText();
System.out.println("Use text in field, \"" + textInField + "\" to call SQL query in a background SwingWorker thread.");
}
}
private static void createAndShowUI() {
JFrame frame = new JFrame("ActionListenerEg");
frame.getContentPane().add(new ActionListenerEg());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
的的ActionListener要么通过按下按钮激发或通过按下从JTextField中输入。然后,我会在我的控制类中使用在actinoPerformed方法内部调用的代码。
编辑2:在自己的Handler或Control类中拥有大多数处理程序或“控制”代码可能是一个好主意,但它不必实现ActionListener接口本身,而只需要将调用的代码来自ActionListener代码。例如,在这里我尝试将所有的处理程序代码放在它自己的类中。它会有不同的方法,被称为各种情况。例如,
import java.awt.Component;
import java.awt.event.*;
import javax.swing.*;
public class ActionListenerEg extends JPanel {
private ActionListenerHandler handler;
private JButton queryButton = new JButton("Query");
private JButton displayButton = new JButton("Display");
private JTextField textField = new JTextField("hello", 20);
// pass in handler or handler
public ActionListenerEg(final ActionListenerHandler handler) {
this.handler = handler;
QueryListener qListener = new QueryListener();
queryButton.addActionListener(qListener);
textField.addActionListener(qListener);
displayButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (handler != null) {
handler.displayActionPerformed(e);
}
}
});
add(queryButton);
add(textField);
add(displayButton);
}
private class QueryListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (handler != null) {
String textInField = textField.getText();
handler.doQueryAction(e, textInField);
}
}
}
private static void createAndShowUI() {
ActionListenerHandler handler = new ActionListenerHandler();
JFrame frame = new JFrame("ActionListenerEg");
frame.getContentPane().add(new ActionListenerEg(handler));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
class ActionListenerHandler {
public void displayActionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog((Component) e.getSource(), "Display things!");
}
public void doQueryAction(ActionEvent e, String textInField) {
String text = "We will use \"" + textInField + "\" to help create and run the SQL Query";
JOptionPane.showMessageDialog((Component) e.getSource(), text);
}
}
如果问题很清楚,或者有任何问题,请提问。
你应该这样做“someString” .equals代替(“someString”)“==” – 2011-04-08 04:20:30