Gå til innhold

Feil ved oppdatering av JTextField


Anbefalte innlegg

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
Videoannonse
Annonse
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...