Dziwne zachowanie metody setText()

0

Cześć,

Piszę progra, który jest prymitywną aplikacją giełdową. I napotkałem na dość duży problem. Mam dwie osobne klasy, w dwóch pakunkach( chyba tak się tłumaczy "package" na język polski). Klasa kupno ma za zadanie obsłużyć kupowanie akcji, ma być wywoływana przy pomocy przycisku. Druga klasa to po prostu GUI z getterami, które służą do przekazywania informacji z GUI do klasy, i Setterami, które ustawiają nowe informacje na GUI. Jednak coś działa niepoprawnie, bo metoda setJ13 nie ustawia "max" jako tekstu na jLabel13. Sama metoda otrzymuje poprawnego double, bo sprawdzałem to przy pomocy prostego println na konsoli. Co ciekawe metoda działa poprawnie, jak zostanie wywołana w klasie odpowiadającej za GUI, poza nią coś idzie nie tak (mimo że wywoływana jest poprawnie). Trochę nie ogarniam tego edytora, więc przepraszam niepoprawne sformatowanie tekstu,

Metoda w klasie "KS" (ona odpowiada za GUI):

 public  void setJ13(double s)
    {
       
        jLabel13.setText(Double.toString(s));
    }  ```

Metoda zawarta w klasie "Kupno" (klasa odpowiadająca za funkcjonalność GUI):


```java
GUI x = new GUI();
 KS y = new KS();
 public void cPaQ(int c) {
        switch(c){
            case 1:
                PaQ(1);
                double max = Double.parseDouble(y.getJ13());
                
                
                if((ilosc*cena < max) && Integer.parseInt(x.getJ16()) > ilosc)
                {

                   max = max - ilosc*cena;
                   y.setJ13(max);
                   int tmp;
                   tmp = (int) (Integer.parseInt(x.getJ16()) - ilosc);
                   x.setJ16(tmp);
                }
                else
                    System.out.println("not supported yet");
                break; ```


Przycisk wywołujący metodę cPaQ() z klasy kupno:

```java private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {                                         
 Kupno kupno =  new Kupno();
 kupno.cPaQ(1); ```
0

Najlepiej jakbyś pokazał jeszcze jak wyglądają klasy KS i GUI bo z powyższego fragmentu kod ustawianie labela wygląda w porządku.

... w dwóch pakunkach( chyba tak się tłumaczy "package" na język polski).

Package tłumaczy się bardziej jako pakiet.
Popracuj jeszcze nad nazwami bo takie x, y strasznie ciężko się czyta.

0
kiyo napisał(a):

Najlepiej jakbyś pokazał jeszcze jak wyglądają klasy KS i GUI bo z powyższego fragmentu kod ustawianie labela wygląda w porządku.

... w dwóch pakunkach( chyba tak się tłumaczy "package" na język polski).

Package tłumaczy się bardziej jako pakiet.
Popracuj jeszcze nad nazwami bo takie x, y strasznie ciężko się czyta.

W GUI i KS nic oprócz deklaracji elementów na JFrame, getterów (które zwracają elementy wpisane w poszczególne Labele) i setterów (które zrobione są w identyczny sposób jak ten co wrzuciłem ) nie ma nic ciekawego. Wszystkie labele i przyciski są deklarowane jako private. Mam wrażenie, że problemem może być fakt, że wywołuję metodę setJ13 przy pomocy instancji klasy, którą tworzę w klasie "kupno". Tylko nie mam pojęcia jak inaczej wywołać te metody bez tworzenie tej instancji.

0

A nie dostajesz żadnych informacji o wyjątkach? Pokaż jak wyglądają getJ16() i getJ13().

0
kiyo napisał(a):

A nie dostajesz żadnych informacji o wyjątkach? Pokaż jak wyglądają getJ16() i getJ13().

Na konsoli nic się nie pojawia, żadnych błędów, ani wyjątków nie wyświetla.

public String getJ13() { return jLabel13.getText(); }

public String getJ16() { return jLabel16.getText(); }

0

Myślałem, że może getJ16() zwraca Stringa typu 23.0 i Integer.parseInt() rzuca NumberFormatException, ale skoro nic nie dostajesz to nie wiem. Możesz wrzucić projekt na GitHuba to jeszcze popatrzę, albo trzeba poczekać aż ktoś mądrzejszy ode mnie pomoże.

0
kiyo napisał(a):

Myślałem, że może getJ16() zwraca Stringa typu 23.0 i Integer.parseInt() rzuca NumberFormatException, ale skoro nic nie dostajesz to nie wiem. Możesz wrzucić projekt na GitHuba to jeszcze popatrzę, albo trzeba poczekać aż ktoś mądrzejszy ode mnie pomoże.

Witaj.Też obstawiałem taki wyjątek, @kiyo

Wracam wzrokiem któryś raz do tego wątku, i jestem bardziej utwierdzony, że getery i setery "w dziedzinie kontrolek" to jest głęboko nienaturalne, kod kliencki musi to parsować / formatować a niby dlaczego? (a po drodze zakładać w jakiej narodowej wersji)

Powinny być w dziedzinie problemu, czyli int, double, BigDecimal itd i nosić nazwy, które dokumentują rolę w algorytmie (cena/price ...) bo 113 nie znaczy nic (oprócz wycieku szczegółów implementacji)

0
AnyKtokolwiek napisał(a):
kiyo napisał(a):

Myślałem, że może getJ16() zwraca Stringa typu 23.0 i Integer.parseInt() rzuca NumberFormatException, ale skoro nic nie dostajesz to nie wiem. Możesz wrzucić projekt na GitHuba to jeszcze popatrzę, albo trzeba poczekać aż ktoś mądrzejszy ode mnie pomoże.

Witaj.Też obstawiałem taki wyjątek, @kiyo

Wracam wzrokiem któryś raz do tego wątku, i jestem bardziej utwierdzony, że getery i setery "w dziedzinie kontrolek" to jest głęboko nienaturalne, kod kliencki musi to parsować / formatować a niby dlaczego? (a po drodze zakładać w jakiej narodowej wersji)

Powinny być w dziedzinie problemu, czyli int, double, BigDecimal itd i nosić nazwy, które dokumentują rolę w algorytmie (cena/price ...) bo 113 nie znaczy nic (oprócz wycieku szczegółów implementacji)

Kombinuje jak mogę, bo niestety większej wiedzy nie mam (uczę się programować dopiero od października). Teraz trochę zmieniam koncepcję projektu i zobaczymy co z tego będzie.

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