2012-01-28 7 views
1

Я хочу прочитать значение из textfied в Java, но я не могу читать его Вот мой кодЧтение значения из текстового поля

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionListener; 
import java.awt.event.*; 

public class TextField extends JDialog { 
    TextField() { 
    JFrame frm = new JFrame("SAMPLE PROGRAM"); 
    frm.setBounds(150,150,420,400); 
    frm.setLayout(null); 
    Container content = frm.getContentPane(); 
    content.setBackground(Color.cyan); 
    JTextField text = new JTextField(); 
    text.setBounds(70,25,100,30); 
    JButton button1, button2; 
    button1 = new JButton("PROGRAMMER"); 
    button2 = new JButton("USER"); 
    button1.setBounds(270,25,120,50); 
    button2.setBounds(270,90,120,50); 
    button1.addActionListener(new ButtonHandler()); 
    button2.addActionListener(new ButtonHandler()); 
    frm.add(button1); 
    frm.add(button2); 
    frm.add(text); 
    frm.setVisible(true); 
    frm.setResizable(false); 
    } 

    public static void main(String[] args) { 
    new TextField(); 
    } 
    class ButtonHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) {  
     String str = new String();  
     str = e.getActionCommand();  
     System.out.println(" " + str); 
    } 
    } 
} 

Я попытался следующие методы

1.In класс текстового поле я использовал этот метод при button2.addactionlistener.It дал ошибку

не может относиться к неконечному переменному тексту внутри внутреннего класса, определенный в другом методе

button1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 
    if(text.getText().equals("joe")) 

2.In класса ButtonHandler

он говорит, что текст не может быть решена

Какой метод следует использовать, чтобы прочитать текстовое поле и в каком классе должен прочитать его в

+0

не могли бы вы сделать свои классы немного яснее и ввести весь необходимый код? Первый класс не имеет метода. – Russell

+0

Почему все символы '>', предшествующие кодам? Пожалуйста, приложите больше усилий в будущем, эта лот читается как завтрак собаки. –

+1

никоим образом не читает базовый учебник/учебник по java и не изучает его содержание :-) http://docs.oracle.com/javase/tutorial/index.html – kleopatra

ответ

2

1) если переименовать (возможный конфликт с с AWT API с именем TextField) и удалить JDialog, потому что он никогда не используется

public class TextField extends JDialog { TextField(){ 

в

public class MyTextField { public MyTextField(){ 

2) и изменить основной метод

public static void main(String[] args) { 
    new TextField(); 
} 

к

public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      private final JTabbedPane jtp = new JTabbedPane(); 

      @Override 
      public void run() { 
       MyTextField textField = new MyTextField(); 
      } 
     }); 
    } 

3) удалить все символы >

4) добавить DefaultCloseOparation для JFrame, в противном случае программа будет оставаться в памяти, пока ваш компьютер не будет перезагружен или выключен

5) удалить все ип-Swing methods и использование a LayoutManager

+0

хорошая идея с DefaultCloseOperations – Russell

+0

Я сделал редактирование. Бросьте назад, если я догадался, что вы имели в виду. ;) –

1

Строка str = text.getText();

это должно работать, если заменить

str = e.getActionCommand(); 

с

String str = text.getText(); 

Если это не сработает, то, возможно, придется создать JTextField как статический JTextField или добавить окончательный модификатор.

PS: в следующий раз, только вставьте необходимый код, а не JFrame или JButtons, он просто упрощает чтение кода.

+0

Скажите, что, сделайте это статическим полем? Надеюсь, это не серьезное предложение.Это решит проблему компиляции, но это все, что она решит. В свою очередь, вы получаете кучу проблем и плохой дизайн. – Robin

+0

Это правда, что он заканчивается плохим дизайном программного обеспечения, но, судя по коду, я бы сказал, что уровень кодера не в том, чтобы делать большие масштабы программ и, таким образом, использование статики упростит работу. Не только это, когда я программирую (скажите, пожалуйста, если это плохо), я склонен не использовать наследование и вместо этого делать важные переменные static и делать много методов вместо классов. – Russell

+0

И что, если вы делаете два экземпляра этого класса ... они собираются использовать одно и то же статическое поле? статические экземпляры принадлежат классу, а не экземпляру класса. Таким образом, JTextField, часть вашего пользовательского интерфейса, никогда не должна быть статическим экземпляром. – Robin

Смежные вопросы