注意:我讀過其他帖子,我嘗試將它應用到我自己的文本,這是它的結果。Java從arraylist中獲得隨機字符串
問題:我必須更改或添加到我的代碼才能正常工作?
錯誤:
error: cannot find symbol
error: cannot find symbol
這些是下列行:134,135
int n = r.nextInt(lijst.size()) ;
kies KiesNaam = lijst.get(n);
這是類:
class kies implements ActionListener {
public void actionPerformed(ActionEvent e) {
Random r = new Random();
int n = r.nextInt(lijst.size()) ;
kies chooseName = lijst.get(n);
textvak2.setText("" + KiesNaam);
}
}
這是我試圖實現的:按下kiesWin按鈕,讓程序從ArrayList中選擇一個隨機的人。隨機選擇的人的姓名應該出現在JTexstField textvak2中。
情況下,你需要整個代碼:(滾動一路下跌的類KIES)
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("My Lottery!");
frame.setContentPane(new Paneel());
frame.setVisible(true);
}
}
class Paneel extends JPanel {
private boven boven;
JTextArea textvak1;
JTextField textvak2;
OnthoudNaam onthoudNaam = new OnthoudNaam();
JTextField invoervak1;
public Paneel() {
setLayout(new BorderLayout()); // using border Layout.
setBackground(Color.LIGHT_GRAY);
boven = new boven();
textvak1 = new JTextArea();
add(new JScrollPane(textvak1));
textvak1.setBackground(Color.WHITE);
textvak2 = new JTextField();
textvak2.setHorizontalAlignment(JTextField.CENTER);
textvak2.setEditable(false);
add(boven, BorderLayout.NORTH);
add(textvak1, BorderLayout.CENTER);
add(textvak2, BorderLayout.SOUTH);
}
public class boven extends JPanel {
JButton kiesWin, resetL;
JLabel label1;
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;
}
public String toString() {
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();
}
}
// invoer handler
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());
invoervak1.setText("");
}
}
// This is the part where it goes wrong.
class kies implements ActionListener {
public void actionPerformed(ActionEvent e) {
Random r = new Random();
int n = r.nextInt(lijst.size()) ;
kies chooseName = lijst.get(n);
textvak2.setText("" + KiesNaam);
}
}
// reset
class reset implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
}
大家誰試圖幫助我:謝謝您的幫助和耐心提前!
不在於它屬於超會有所幫助,因爲它是私有的。 – Keppil 2013-05-08 22:09:03
@Keppil:對 - 儘管至少它會更容易解決(例如,通過訪問器方法)。 – 2013-05-08 22:09:39