Java错误:找不到符号,也找不到原因

error: cannot find symbol

如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。

如果我尝试更改boven类中的“}”符号并将其放置在文本的末尾,那么我什至会收到更多错误消息。

我必须在代码中进行哪些更改才能使其正常工作?

我是Java的新手,我知道有更多类似这样的文章,但是由于对Java的了解有限,我无法将它们应用到我的代码中。

如果有人想知道:我正在使用JCreator。

我想做的事情很简单。

1)在JTextField中填写一个名称,按Enter,该名称应出现在JTextArea中。名称在JTextArea中之后,JTextField变为空,以便您可以填充另一个名称,依此类推,应该在JTextArea中出现一个名称列表。(这就是我现在想做的)

2)按下按钮kiesWin,使程序从列表中选择一个随机的人。

3)按下按钮resetL重置程序,这样我就可以列出一个新列表来从中随机选择一个获胜者。

来自InvoerVakHandler类)

String invoer = invoervak1.getText();

以我对Java的有限了解,这个问题可能随处可见,因此万一我将发布整个代码。

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

// Main method to make the frame

public class Loterij3 extends JFrame {

public static void main( String args[] ) {

JFrame frame = new Loterij3();

frame.setExtendedState( frame.MAXIMIZED_BOTH );

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

frame.setTitle( "Klanten Register" );

frame.setContentPane( new Paneel() );

frame.setVisible( true );

}

}

class Paneel extends JPanel {

private boven Boven;

JTextArea textvak1;

JTextField textvak2;

OnthoudNaam onthoudNaam = new OnthoudNaam();

public Paneel() {

setLayout( new BorderLayout() ); // using border Layout.

setBackground( Color.LIGHT_GRAY );

textvak1 = new JTextArea();

add( new JScrollPane( textvak1 ) );

textvak1.setBackground( Color.WHITE );

textvak2 = new JTextField();

textvak2.setHorizontalAlignment(JTextField.CENTER);

textvak2.setEditable( false );

Boven = new boven();

add( Boven, BorderLayout.NORTH );

add( textvak1, BorderLayout.CENTER );

add( textvak2, BorderLayout.SOUTH );

}

public class boven extends Paneel {

JButton kiesWin, resetL;

JLabel label1;

JTextField invoervak1;

public boven() {

setBackground( Color.LIGHT_GRAY );

setLayout( new GridLayout( 1, 4, 100, 5 ) ); // using GridLayout.

Border border =

BorderFactory.createEmptyBorder( 10, 10, 10, 10 );

setBorder( border );

kiesWin = new JButton("Kies een Winnaar!");

kiesWin.addActionListener( new kies() );

resetL = new JButton("Reset alles");

resetL.addActionListener( new reset() );

label1 = new JLabel("Voer Persoon in en druk op enter: ", JLabel.RIGHT);

invoervak1 = new JTextField( 20 );

invoervak1.addActionListener( new InvoerVakHandler() );

add( label1 );

add( invoervak1 );

add( kiesWin );

add( resetL );

}

}

// de naam

class naam {

private String ingevoerdNaam;

public naam( String ingevoerdNaam) {

this.ingevoerdNaam = ingevoerdNaam;

}

public String getIngevoerdNaam() {

return ingevoerdNaam;

}

}

// Arraylist

class OnthoudNaam extends JPanel {

private ArrayList<naam> lijst;

public OnthoudNaam() {

lijst = new ArrayList<naam>();

}

public void voegNaamToe(naam x ) {

lijst.add(x);

}

public String toString() {

StringBuffer buffer = new StringBuffer();

for(naam x : lijst ) {

buffer.append( x );

buffer.append( "\n" );

}

return buffer.toString();

}

}

// this is the part where the code goes wrong

public class InvoerVakHandler implements ActionListener {

public void actionPerformed( ActionEvent e ) {

String invoer = invoervak1.getText();

naam naam = new naam( invoer );

onthoudNaam.voegNaamToe( naam );

textvak1.setText( onthoudNaam.toString() );

}

}

// kies

class kies implements ActionListener {

public void actionPerformed( ActionEvent e ) {

}

}

// reset

class reset implements ActionListener {

public void actionPerformed( ActionEvent e ) {

}

}

}

回答:

课堂上所讨论的行: InvoerVakHandler

该变量在类中定义: boven

这就是为什么它找不到它的原因。

我认为您可以从ActionEvent传递给actionPerformed()方法的事件中获取事件的来源。

注意,通常我们使用大写字母开头任何类的名称,并使用小写字母开头方法和变量。(常量是一个例外。)

以上是 Java错误:找不到符号,也找不到原因 的全部内容, 来源链接: utcz.com/qa/431633.html

回到顶部