2016-08-15 59 views
0

我有一個即時編碼的字典。它現在在準系統中。這是我第一個揮杆項目。包含main方法的類如下:如何在JTextArea可用於寫入之前驗證對JTextField的輸入?

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); 
      } 

     }); 
    } 
} 

然後,我有這個類,創建你看到的初始屏幕: 進口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); 
} 

}

我怎樣才能使它所以當你輸入單詞,它不會讓你之前輸入有效的字符串,你輸入一個定義?附:我想單詞選項是一個jtextfield和定義一個jtextarea。我希望這是可讀的im匆忙,所以它的馬虎,但我只是想練習。

+2

'的setEnabled(假)' –

+2

* 「..它打開了一個新窗口。」 *請參閱[多JFrames,好/壞習慣的用?(HTTP:// stackoverflow.com/q/9554636/418556) –

回答

-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);     
      } 
     }   
    }); 
} 

}

+0

請參閱[檢測/修復代碼塊的懸掛緊密支架](http://meta.stackexchange.com/q/251795/155831),以瞭解我無法再解決的問題煩擾修理。 –

+0

'getContentPane()。setLayout(null);'你不應該這樣做(在代碼中用於公開/新手觀看),即使原始問題*以這種方式開始! –

+0

更多內容.. Java GUI必須在不同的語言環境中使用不同的PLAF來處理不同的操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 –

相關問題