Чтение значения из Textfield - PullRequest
       5

Чтение значения из Textfield

1 голос
/ 28 января 2012

Я хочу прочитать значение из 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.В классеTextfield Я использовал этот метод в button2.addactionlistener. Он выдал ошибку

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

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

2.Inкласс ButtonHandler

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

Какой метод следует использовать для чтения текстового поля и в каком классе его следует читать

Ответы [ 2 ]

2 голосов
/ 28 января 2012

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) добавьте DefaultCloseOperation для JFrame, в противном случае ваша программа останется вдо тех пор, пока ваш компьютер не будет перезагружен или выключен

5) удалите все методы un_ Swing и используйте LayoutManager

1 голос
/ 28 января 2012

String str = text.getText ();

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

str = e.getActionCommand();

с

 String str = text.getText();

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

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

...