如何在JTextField下的JTextArea可以写入之前验证输入到JTextField?

时间:2016-08-15 07:28:06

标签: java swing user-interface awt swingx

我有一本即时编码的字典。它现在在准系统中。这是我的第一个摇摆项目。包含main方法的类如下:

    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;

    public class TestDemo
    {
    public static void main (String[] args)
    {
    SwingUtilities.invokeLater(new Runnable()
       {

        @Override
        public void run()
           {
            // TODO Auto-generated method stub
            JFrame frm = new MainFrame("First Window");
            frm.setVisible(true);
            frm.setSize(500, 500);
            frm.setLocationRelativeTo(null);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }

       });
    }
}

然后我有这个类创建你看到的初始屏幕:         import java.awt.BorderLayout;         import java.awt.Container;         import java.awt.event.ActionEvent;         import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.JRadioButton;
    import javax.swing.JTextArea;


    public class MainFrame extends JFrame{

public MainFrame(String title) {
    // TODO Auto-generated constructor stub
    super(title);

    // Set the Layout Manager
    setLayout(new BorderLayout());

    // Create Swing components
    //Text Fields


    JButton btn = new JButton("Continue");

    JRadioButton addWord = new JRadioButton("Add Word to the Dictionary");

    // Add Swing Components to content pane 
    Container c = getContentPane();
    c.add(btn, BorderLayout.SOUTH);
    c.add(addWord, BorderLayout.CENTER);
    //Add behaviour of Buttons. 
    btn.addActionListener(new ActionListener(){

        // This is when your button is clicked 
        @Override
        public void actionPerformed(ActionEvent e) {
            if(addWord.isSelected()==true){

                new addWordFrame();
            }
        }

    });
}

    }

到目前为止只有一个按钮,即在字典中添加一个单词。如果按下它,它会打开一个新窗口。新窗口将有一个文本输入字段,要求输入单词。一旦检查到该单词是有效字符串,它就会询问定义。如果单词不是有效字符串,则不允许您在“定义”字段中输入文本。这就是我到目前为止所做的:

    import javax.swing.JFrame;


    public class addWordFrame extends JFrame{
    public addWordFrame(){
    super("Adding a word to the dictionary");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
}

}

如果输入单词,我怎么能这样做,在输入有效字符串之前,它不会让你输入定义?附:我希望word选项是jtextfield,定义是jtextarea。我希望这是可读的即时冲动所以它的草率但我只是想练习。

1 个答案:

答案 0 :(得分:-1)

它是通过keyTyped方法验证textField内容的简单示例。该示例使textArea首先禁用文本区域。但是当在textField中键入的单词将具有> 2然后将启用文本区域。它是解决您问题的最简单方法之一。我有一个建议,你不要使用很多JFrames将主窗口作为JFrame,但要让其他窗口使用JDialog类。

public class AddWordWindow extends JFrame{

public AddWordWindow(){
    getContentPane().setLayout(null);

    JTextPane wordText = new JTextPane();
    wordText.setBounds(10, 21, 82, 20);
    getContentPane().add(wordText);

    JTextArea descriptionText = new JTextArea();
    descriptionText.setBounds(10, 66, 143, 57);
    getContentPane().add(descriptionText);
    descriptionText.setEnabled(false);


    wordText.addKeyListener(new KeyAdapter() {

        @Override
        public void keyTyped(KeyEvent e) {              
            if(wordText.getText().length()>2){
                descriptionText.setEnabled(true);                   
            }
        }           
    });
}

}