2015-03-26 3 views
0

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

Я получаю ошибку на этой линии: 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(); 

    } 
} 



} 

ответ

1

JVM путает ваше имя объекта с классом, в Java является отговаривает начать переменные или имена объектов с uppercase

Вы должны передать Вам экземпляр TextField, а не сам класс, переименовывать:

JTextField TextField = new JTextField(); 

в

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

Не забудьте переименовать все вхождения в вашем коде, то вы будете делать:

String string = mTextField.getText(); 
+0

Ура! Я обнаружил исходную проблему, это была простая ошибка, и я просто случайно инициализировал JTextField как «Текстовое поле», а не «TextField». – crazychris119

+0

приятно помочь, если полезно, не стесняйтесь повышать или отмечать ответ как принято;) –

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