t0bbi Skrevet 14. november 2008 Del Skrevet 14. november 2008 Har et lite test program her som skal skrive ut ting når en klikke på 2 knapper. Sliter litt med å forstå hvorfor programmet skriver ut "testknapp" til JTextField uansett hvilken knapp jeg trykker. Har lagt inn 2 "System.out.println"for å teste og det ser der ut til å virke fint. Noen som kan svare meg på hvorfor? Her er koden min: package eksempler_2008; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Skjerm extends JPanel{ static JFrame hovedvindu; JPanel panel1; JButton knapp1; JButton knapp2; JTextField tallfelt; public Skjerm(){ panel1 = new JPanel(); knapp1 = new JButton("Ok"); knapp2 = new JButton("Test knapp"); panel1.add(knapp2); panel1.add(knapp1); add(panel1); tallfelt = new JTextField(10); panel1.add(tallfelt); ButtonHandler handler = new ButtonHandler(); knapp1.addActionListener(handler); knapp2.addActionListener(handler); } private class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent event) { if (event.getSource()== knapp1) System.out.println("ok"); tallfelt.setText("ok"); if (event.getSource() == knapp2) System.out.println("testknapp"); tallfelt.setText("testknapp"); } } public static void main(String[] args) { hovedvindu = new JFrame("Skjerm"); hovedvindu.add(new Skjerm()); hovedvindu.pack(); hovedvindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); hovedvindu.setVisible(true); } } Lenke til kommentar
t0bbi Skrevet 14. november 2008 Forfatter Del Skrevet 14. november 2008 Fant selv ut at paranteser {} i if setningene hjalp. Uvvist hvorfor det fungerer med systemout print uten disse parantesene. Noen somkan svare på det? Lenke til kommentar
MrEspen Skrevet 14. november 2008 Del Skrevet 14. november 2008 Fant selv ut at paranteser {} i if setningene hjalp.Uvvist hvorfor det fungerer med systemout print uten disse parantesene. Noen somkan svare på det? Fordi hvis du ikke bruker {} for å markere en block etter if (eller while, for etc.) så vil kompilatoren regne med at det kun er påfølgende linje som er innholdet i if-blocka. Derfor vil tallfelt.setText("testknapp"); oppfattes som den er utenfor if-blocka selv om du mente den skulle være innefor, den blir da alltid utført. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå