Bin gerade am Theoriepauken (Java ist auch eine Insel, das ist einigermaßen lesbar!) und noch ziemlich am Anfang. Damit ich nicht einschlafe probiere ich herum und habe folgendes Problem.
Ich komme leider nicht weiter - ich weiß "die Grundlagen", aber so kann ich mich für's weiterlesen motivieren...
Es geht um einen Buttonklick welcher in einem Label angezeigt werden soll (eine Variable soll pro Klick um 1 erhöht werden).
Etliche Anweisungen schon bei der Fenstererstellung sind völlig unnötig, die sind beim herumexperimentieren entstanden (ich wollte nur auf die schnelle eine Fensterausgabe und habe es von vorhergehenden Experimenten übernommen)!
Hier mein Codeschnipsel mit meinen auskommentierten Versuchen (jeder hat mal angefangen, oder?):
Java:
publicclassTest{publicstaticvoidmain(String[] args)throwsException{//FensterJFrame frame =newJFrame();
frame.setTitle("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,500);
frame.setResizable(false);
frame.setLocationRelativeTo(null);//ButtonJButtonKlicks=newJButton("Zähle");
size =Klicks.getPreferredSize();Klicks.setBounds(600+ insets.left,300+ insets.top,size.width, size.height);
frame.getContentPane().add(Klicks);//TextJLabelKlicksanzeige=newJLabel("Klicks bisher");
size =Klicksanzeige.getPreferredSize();Klicksabzeige.setBounds(560+ insets.left,275+ insets.top,size.width, size.height);
frame.getContentPane().add(Klicksanzeige);//Fenster und Inhalt anzeigen
frame.setVisible(true);#
//So gehts nicht, innerhalb von Main(), wo Variable hinschreiben! /*Klicks.addActionListener(new ActionListener() {
int zaehler = 0;
@Override
public void actionPerformed(ActionEvent e) {
zaehl = zaehl++;
Klicksanzeige.getText("Klicks bisher: " + zaehler);
}
});*/}//so geht's auch nicht, ausserhalb von Main()!/*int zaehler = 0;
public static void ButtonHandling(JButton Klicks, JLabel Klicksanzeige){
Klicks.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == Klicks){
zaehler = zaehler++;
Klicksanzeige.getText("Klicks bisher: " + zaehler);
}
}
});
}*/}
Bitte halte Dich wenigstens an die Java-Konventionen zur Schreibweise von Bezeichnern: Variablen, Methoden und Parameter in lowerCamelCase, Typen in UpperCamelCase.
Um aus der anonymen inneren Klasse auf eine Variable in der Methode zugreifen zu können, muss die Variable final deklariert werden. Daher funktioniert das mit einem einfachen int nicht. Wenn Du unbedingt eine Variable aus Deiner main-Methode nutzen willst, könntest Du ein Array oder ein anderes Objekt, wie z. B. AtomicInteger verwenden.
Ansonsten gilt, was ich Dir hier schon geschrieben habe:
ja, weiß ich eh noch - aber irgendwie begreife ich's (noch) nicht. Normalerweise finde ich immer eine Lösung (meistens keine "herzeigbare") die funktioniert (so recht und schlecht) und die Motivation ist wieder da. Aber bei diesem Problem habe ich anscheinend meine aktuelle "Logiggrenze" erreicht...
Yes, vielen Dank - jetzt funktionierts. Und natürlich setText mit getText verwechselt. Bin heute schon zu lange am lesen und probieren (den ganzen Tag schon)...
muchas gracias...