M
madman
Gast
Hallo,
ich hänge mal wieder an meinem Programm und an einer Compilermeldung. Weiß nicht was die bedeutet.
Hab nen Button der Speichern soll. Danach öffnet sich eine JOptionPane mit einer ComboBox und einen Texfeld, welches als Statusmeldung dienen soll. addItemListener mit itemStateChanged hab ich auf die Box angesetzt, um die Auswahl zu bekommen. Wenn das Laufwerk nicht lesbar ist, soll im JTextField "statusLaufwerk" der momentane Status angezeigt werden. Über sie Konsole funktioniert das ganze wundebar.
Aber sobald ich die Ausgabe mit setText auf das Textfeld umleite kommt die Fehlermeldung:
Exception in thread "AWT-EventQueue-1" java.lang.Error: Unresolved compilation problems:
Cannot refer to a non-final variable statusLaufwerk inside an inner class defined in a different method
Cannot refer to a non-final variable statusLaufwerk inside an inner class defined in a different method
Ich versteh die Meldung leider überhaupt nicht. Kann mir vielleicht jemand sagen was ich anders machen muss, damit das Ganze funktioniert?
Vielen Dank!
Gruß
Mike
ich hänge mal wieder an meinem Programm und an einer Compilermeldung. Weiß nicht was die bedeutet.
Hab nen Button der Speichern soll. Danach öffnet sich eine JOptionPane mit einer ComboBox und einen Texfeld, welches als Statusmeldung dienen soll. addItemListener mit itemStateChanged hab ich auf die Box angesetzt, um die Auswahl zu bekommen. Wenn das Laufwerk nicht lesbar ist, soll im JTextField "statusLaufwerk" der momentane Status angezeigt werden. Über sie Konsole funktioniert das ganze wundebar.
Aber sobald ich die Ausgabe mit setText auf das Textfeld umleite kommt die Fehlermeldung:
Exception in thread "AWT-EventQueue-1" java.lang.Error: Unresolved compilation problems:
Cannot refer to a non-final variable statusLaufwerk inside an inner class defined in a different method
Cannot refer to a non-final variable statusLaufwerk inside an inner class defined in a different method
Ich versteh die Meldung leider überhaupt nicht. Kann mir vielleicht jemand sagen was ich anders machen muss, damit das Ganze funktioniert?
Vielen Dank!
Gruß
Mike
Code:
public class M2P2 extends JApplet implements ActionListener
{
JFrame frame;
JButton Button;
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(1,1));
Button = new JButton("");
Button.addActionListener(this);
contentPane.add(Button);
setSize(360, 500);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource().equals(Button))
{
String[] auswahl = { "C:", "D:", "E:", "F:", "G:" };
JLabel label = new JLabel("Laufwerk auswählen:");
JComboBox combobox = new JComboBox(auswahl);
JLabel statusLabel = new JLabel("Laufwerksstatus:");
Color Grau = new Color(238,238,238);
Color Schwarz = new Color(0,0,0);
JTextField statusLaufwerk = new JTextField();
statusLaufwerk.setBackground(Grau);
statusLaufwerk.setEditable(false);
statusLaufwerk.setForeground(Schwarz);
Font jFont = new Font ("Arial", Font.BOLD, 13);
statusLaufwerk.setFont(jFont);
JPanel creationPanel = new JPanel(new GridLayout(4,2));
creationPanel.add(label);
creationPanel.add(combobox);
creationPanel.add(statusLabel);
creationPanel.add(statusLaufwerk);
combobox.addActionListener(this);
combobox.setSelectedIndex(0);
combobox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (ItemEvent.SELECTED == e.getStateChange()){
File laufwerk = new File (e.getItem().toString());
if(laufwerk.canRead() == false){
System.out.println("Laufwerk [" + laufwerk + "] ist nicht bereit");
//statusLaufwerk.setText(Laufwerk [" + laufwerk + "] ist nicht bereit");
}
if(laufwerk.canRead() == true){
System.out.println("Laufwerk [" + laufwerk + "] ist bereit");
//statusLaufwerk.setText("Laufwerk [" + laufwerk + "] ist bereit");
}
}}
});
int antwort = JOptionPane.showConfirmDialog(null, creationPanel, "Laufwerk auswählen!",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
switch(antwort) {
case JOptionPane.OK_OPTION:
String buchstabe = combobox.getSelectedItem().toString();
String dir = ("\\DATEN\\");
File file = new File(buchstabe+"\\"+dir);
if (file.exists())
{
System.out.println(buchstabe+dir + " Verzeichnis existiert.");}
else
{
file.mkdirs();
System.out.println("Verzeichnis: " + file + " erstellt.");
}
String dateiname = (buchstabe+dir+"DATEN.TXT");
File datei = new File(dateiname);
System.out.println("dateinamen;"+dateiname);
try{
FileOutputStream fout = new FileOutputStream(datei);
OutputStreamWriter osw = new OutputStreamWriter(fout, "UTF-8");
BufferedWriter out = new BufferedWriter(osw);
out.newLine();
out.write("Daten=1:"+tf2.getText()+";2:"+tf3.getText()+";3:"+tf4.getText()+";");
out.newLine();
out.close();
System.out.println(datei + " erfolgreich gespeichert!");
}
catch (IOException e){
System.out.println("Fehler beim speichern!");
}
break;
case JOptionPane.CANCEL_OPTION:
System.out.println("\"Abbrechen\" geklickt.");
break;
case JOptionPane.CLOSED_OPTION:
System.out.println("Dialog geschlossen");
}
}
}