我有这段代码:
static JFrame inputFrame = new JFrame();
static JTextField myTextfield = new JTextField();
static JButton myButton = new JButton("Hi!");
private static void inputGUI() {
inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inputFrame.setTitle("The INPUT");
inputFrame.setLayout(new FlowLayout());
inputFrame.setSize(1366,768);
inputFrame.setVisible(true);
inputFrame.add(myTextField);
inputFrame.add(myButton);
myButton.setEnabled(false);
myTextField.addActionListener(myListener);
}
static ActionListener myListener = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==inputFrame){
//What Do I put here?
}
}
}
我想做的是:
当我在myTextField
中输入内容而未按Enter键时,按钮myButton
已启用(例如myButton.setEnabled(true);
)。
答案 0 :(得分:1)
The best solution
正在使用DocumentFilter。因此它可以检查您的JTextField
何时包含某些内容,然后您可以触发按钮激活。
在这里,我重新编码了你的代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
class checkText extends DocumentFilter {
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
super.replace(fb, offset, length, text, attrs);
GuiTest.enableButton();
}
}
public class GuiTest extends JFrame {
static JFrame inputFrame = new JFrame();
static JTextField myTextfield = new JTextField(10);
static JButton myButton = new JButton("Hi!");
public GuiTest() {
inputGUI();
}
private static void inputGUI() {
inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inputFrame.setTitle("The INPUT");
inputFrame.setLayout(new FlowLayout());
inputFrame.setSize(1366, 768);
inputFrame.setVisible(true);
inputFrame.add(myButton);
DocumentFilter filter = new checkText();
((AbstractDocument) myTextfield.getDocument()).setDocumentFilter(filter);
inputFrame.add(myTextfield);
myButton.setEnabled(false);
}
public static void enableButton() {
myButton.setEnabled(true);
}
public static void main(String args[]) { new GuiTest(); }
}
之前:
之后:
答案 1 :(得分:-1)
您只需插入此代码:
JTextField jTF = (JTextField)e.getSource();
if( jTF.getText().length()>0 )
myButton.setEnabled(true);
回答评论:
答案 2 :(得分:-2)
试试这个
myTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
if(myTextField.getText().isEmpty()){
myButton.setEnabled(false);
} else{
myButton.setEnabled(true);
}
}
});
我希望它会有所帮助!