Je veux entrer du texte dans mon quatrième JPanel, et chaque fois que j'appuie sur enter pour mettre à jour le premier JPanel avec le texte . J'ai ajouté un keylistener pour la clé de retour, il exécute une fonction dans la classe interne AddSong, cette fonction prend dans un arraylist de texte, et renvoie une chaîne. Je veux afficher cette chaîne sur le JPanel dans le premier quadrent, mais cela ne fonctionne pas. En ce moment je crois qu'il enlève le premier JPanel, et ne met pas à jour. Je suis très confus parce que c'est ma première rencontre avec des événements clés comme je suis nouveau à la programmation.Comment puis-je référencer la variable "display" de ma classe interne, à utiliser dans la classe externe dans mon JLabel
Voici le 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();
}
}
S'il vous plaît nous montrer sur quelle ligne vous obtenez l'erreur. (Et ne nous donnez pas juste un numéro de ligne, ce n'est pas assez bon pour nous de dire quelle ligne cause l'erreur.) – ajb
Je reçois l'erreur sur la ligne qui lit "songList = new JLabel (addSong. affichage, SwingConstants.CENTER); dans la fonction de lecteur de musique dans la classe de lecteur de musique –