Ich möchte Text in meine vierte JPanel eingeben, und jedes Mal, wenn ich Enter drücke, um das erste JPanel mit dem Text zu aktualisieren . Ich habe einen Keylistener für den Return-Schlüssel hinzugefügt, er führt eine Funktion in der inneren Klasse AddSong aus, diese Funktion nimmt eine Arraylist von Text auf und gibt eine Zeichenkette zurück. Ich möchte diese Zeichenfolge auf dem JPanel im ersten Quadranten anzeigen, aber es funktioniert nicht. Im Moment glaube ich, dass es das erste JPanel entfernt und nicht aktualisiert. Ich bin sehr verwirrt, weil dies meine erste Begegnung mit Schlüsselereignissen ist, da ich neu im Programmieren bin.Wie referenziere ich die "display" Variable aus meiner inneren Klasse, um in der äußeren Klasse in meinem JLabel
Hier ist der Code:
public class MusicPlayer extends JFrame{
private static final int WIDTH = 400;
private static final int HEIGHT = 400;
private JLabel songList,songPlaying,c;
private JTextField enterSong;
private AddSong input;
public MusicPlayer(){
//Text box enterSong, input passed to actionListener
input = new AddSong();
enterSong = new JTextField(10);
enterSong.addActionListener(input);
//Numbers the quadrents
songList = new JLabel(input.printSongs(input.songList),SwingConstants.CENTER);
songPlaying = new JLabel("2",SwingConstants.CENTER);
c = new JLabel("c",SwingConstants.CENTER);
//Makes and sets size of pane
Container pane = getContentPane();
pane.setLayout(new GridLayout(2,2));
//Add JLabels to panes in the container
pane.add(songList);
pane.add(songPlaying);
pane.add(c);
pane.add(enterSong);
//KeyListener - return
addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent ke){}
@Override
public void keyReleased(KeyEvent ke){}
@Override
public void keyTyped(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_ENTER){
input.printSongs(input.songList);
}
}
});
add(songList);
pack();
setTitle("Andrew's Music Player");
setSize(WIDTH,HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public class AddSong implements ActionListener{
//List of Songs
ArrayList<String> songList = new ArrayList<String>();
String display;
public AddSong(){
display = "";
}
public void actionPerformed(ActionEvent e){
String song;
//get the text
song = enterSong.getText();
//add current text string to list
songList.add(song);
//print songlist
System.out.print(printSongs(songList));
}
public String printSongs(ArrayList<String> songList){
display = "";
for(int i = 0; i < songList.size(); i++){
display += songList.get(i) + "\n";
}
return display;
}
}
public static void main(String args[]){
MusicPlayer boi = new MusicPlayer();
}
}
Bitte zeigen Sie uns, in welcher Zeile Sie den Fehler erhalten. (Und geben Sie uns nicht nur eine Zeilennummer. Das ist nicht gut genug für uns zu sagen, welche Zeile den Fehler verursacht.) – ajb
Ich bekomme den Fehler in der Zeile, die liest "songList = new JLabel (addSong. Display, SwingConstants.CENTER); in der Musik-Player-Funktion in der Musik-Player-Klasse. –