【问题标题】:converting textfield value to characters array将文本字段值转换为字符数组
【发布时间】:2015-03-26 15:52:44
【问题描述】:

我需要能够将文本字段的输入设置为字符数组。我尝试从文本字段中获取文本并将其设为字符串,然后将该字符串转换为字符,但这不起作用。

我在此行收到错误:String string = TextField.getText();
错误表明我:Cannot make a static reference to a non static method getText() from the type textComponent

我不太确定我哪里出错了,所以非常感谢任何帮助。

package lab4;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import lab3.FontSize;
import lab3.Calculator.event;

public class Scrolling extends JFrame{


JLabel label;
JTextField Textfield;
JPanel panel;
public String string;

public static void main (String[]args){

    Scrolling scroller = new Scrolling();
    scroller.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    scroller.setTitle("Marquee scroller");
    scroller.setSize(1500,750);
    scroller.setVisible(true);
    scroller.setLayout(new GridLayout(2,1));
}

public Scrolling() {

    JPanel panel1 = new JPanel();
    panel1.setLayout(new GridLayout(1,2));
    panel1.setSize(1500, 300);

    JLabel label = new JLabel("Enter text and press return");
    label.setVisible(true);
    label.setFont(label.getFont().deriveFont(30.0f));
    label.setHorizontalAlignment(JLabel.CENTER);
    panel1.add(label);


    JTextField TextField = new JTextField();
    TextField.setVisible(true);
    TextField.setFont(TextField.getFont().deriveFont(30.0f));
    TextField.setHorizontalAlignment(JTextField.CENTER);

    panel1.add(TextField);

    JPanel panel2 = new JPanel();
    panel2.setLayout(new GridLayout(1,10));


    Label[] labelArray = new Label[10];
        for(int i = 0; i < 10; i ++){
            labelArray[i] = new Label("");
            labelArray[i].setBackground(Color.white);
            labelArray[i].setAlignment(Label.CENTER);
            labelArray[i].setFont(new Font("Serif", Font.BOLD, 30));
            labelArray[i].setText("1");
            panel2.add(labelArray[i]);
        }

        add(panel2);
        add(panel1);

        event e = new event();
        TextField.addActionListener(e);
}



public class event implements ActionListener {

    public void actionPerformed(ActionEvent e) {

        String string = TextField.getText();
        char[] charArray = string.toCharArray();

    }
}



}

【问题讨论】:

    标签: java arrays string text textfield


    【解决方案1】:

    JVM 将您的对象名称与类混淆,在 Java 中,强烈建议不要以 uppercase 开头的变量或对象名称

    你必须引用你的 TextField 实例,而不是类本身,重命名:

    JTextField TextField = new JTextField();
    

    JTextField mTextField = new JTextField();
    //         ^note lowercase to start variable name
    

    记得在你的代码中重命名所有出现的地方,然后你会这样做:

    String string = mTextField.getText();
    

    【讨论】:

    • 干杯!我发现了最初的问题,这是一个简单的错误,我只是碰巧将 JTextField 初始化为“Textfield”而不是“TextField”。
    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多