Wątek przeniesiony 2014-02-12 18:26 z Java przez bogdans.

Metoda klasy nie zwiększa wartości zmiennej po wywołaniu.

0

Witam.

Mam dość banalny problem, którego nie mogę pojąć... prosta rzecz ale nie wiem czemu mi to nie działa.

Mam klasę Punkt:

int x = 0;
int y = 0;

public void zwiekszX()
    {
      x += 30;
    }
public int get_X()
    {
        return x;
    }

I klasa główna:

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         Punkt punkt = new Punkt();
         punkt.zwiekszX();
}
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
          Punkt punkt = new Punkt();
          jTextField1.setText(Integer.toString(punkt.get_X()));
}

Problem w tym że gdy naciskam przycisk, który ma zwiększyć X a następnie przycisk wyświetlający wartość X to pokazuje cały czas wartość początkową X. Nie zwiększa mi X. Banalny problem, ale nie mogę zauważyć co robię źle.

1

Moze dlatego, ze zmieniasz ten X w kompletnie innym obiekcie niz potem probujesz wyswietlic? Po co za kazdym razem tworzysz nowy punkt?

0

Faktycznie w tym był problem... spowodowane to było złym zrozumieniem zasad obiektowości... myślałem że to nie robi różnicy ile utworzę obiektów skoro wszystkie odwołują się do tej samej klasy. Dzięki!

0

Mam jeszcze jedno pytanie a nie chcę zaśmiecać forum i tworzyć nowego posta:

problemjp_ehxqxqn.jpg

Wie ktoś o co chodzi eclipse? Nie wiadomo co bym nie zrobił to ciągle mam te ostrzeżenia. Nawet jak uruchomię program zawierający jedynie System.out.print(). Programy niby się uruchamiają, ale nie wiem czy to będzie mi w czymś przeszkadzać?

dodanie obrazka do załączników posta - fp

0

Nie sprawi Ci to kłopotów.
Być może się jednak pomyliłeś, chciałeś zdefiniować konstruktor, a zdefiniowałeś metodę nazywającą się tak samo jak klasa.

public class T
{
     public T(){} // to jest konstruktor
     public void T(){} //a to nie jest konstruktor
}
0

No tak metodę main mam o tej samej nazwie co konstruktor, ale nazwy tej funkcji nie można zmienić. Ale skoro nie sprawi mi to kłopotów to jest ok. W sumie i tak zastanawiam się nad przesiadką na NetBeans... designer mnie jednak przekonuje.

0

Ale nazwę klasy możesz zmienić na Main, i konflikt nazw magicznie zniknie. Eclipse ma wtyczkę (designera) WindowBuilder. kod przez nią generowany wygląda dużo lepiej niż generowany przez NetBeansa.

0

Wiem że eclipse posiada taką wtyczke jednak problem w tym że nie mogę dokończyć instalacji wtyczki ponieważ przycisk Create new visual classes nie ,nie klikalny' da się na nie kliknąć ale nic się nie rozwija.

1 użytkowników online, w tym zalogowanych: 0, gości: 1