Wątek przeniesiony 2016-05-07 13:36 z Java przez bogdans.

Aktualizacja obiektu i wywołanie paintComponent

2016-05-05 12:54

Rejestracja: 4 lata temu

Ostatnio: 8 miesięcy temu

0

Witam,
mam problem z ponownym narysowaniem komponentu po naciśnięciu przycisku "aktualizuj". Chciałbym aby po wciśnięciu przycisku zostały pobrane nowe dane i narysowanie komponentu w miejscu zgodnym co do danych, które zostały pobrane.

Mam dwie klasy. Jedna to Rysowanie() odpowiedzialna za wyrysowanie komponentu a druga z interfejsem dla użytkownika.
Problem polega na tym, że gdy wciskam przycisk aktualizuj nic się nie dzieje. Próbowałem repaint() dla obiektu jak i dla panelu ale niestety nie udało się .
Będę wdzięczny za pomoc.

 public Rysowanie(int rat_x,int rat_y,int ton_x,int ton_y){
       ratownik_x=rat_x;
       ratownik_y=rat_y;
       tonocy_x=ton_x;
       tonocy_y=ton_y;

                }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d= (Graphics2D)g;
        g2d.setColor(Color.BLUE);
        //g2d.drawRect(0, 0, 400,100);
        g2d.fillRect(0, 0, 400, 100);
        g2d.setColor(Color.yellow);
        g2d.fillRect(0, 100,400, 200);
        g2d.setColor(Color.BLACK);
        g2d.drawString(tonocy, tonocy_x, tonocy_y);
        g2d.drawString(ratownik, ratownik_x, ratownik_y);

    }  
public Rameczka() {
        initComponents();

            rys=new Rysowanie(t_x,t_y,r_x,r_y);
            rys.setSize(400,200);
            jPanel1.add(rys);
    }

    private void aktualuzujActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if(evt.getSource()==aktualuzuj){

            String tonacy_x=tonacyX.getText();
           int t_x1=Integer.parseInt(tonacy_x);
          t_x=t_x1;
             String tonacy_y=tonacyY.getText();
            t_y=Integer.parseInt(tonacy_y);
            String ratownik=ratownikX.getText();
            r_x=Integer.parseInt(ratownik);
              Strig ratownik_y=ratownikY.getText();
            r_y=Integer.parseInt(rat

            rys.repaint();

        } 

Pozostało 580 znaków

Wybitny Orzeł
2016-05-05 13:16
Wybitny Orzeł
0

Nie aktualizujesz danych wewnątrz klasy Rysowanie dlatego obiekt jest rysowany z danymi jakie zostały przesłane podczas tworzenia klasy Rysowanie.

Pozostało 580 znaków

2016-05-05 13:25
Moderator

Rejestracja: 4 lata temu

Ostatnio: 8 miesięcy temu

0

A podpowiesz mi jak można to zrobić?

Pozostało 580 znaków

2016-05-07 07:47

Rejestracja: 11 lat temu

Ostatnio: 1 minuta temu

0

Musisz zmienić w klasie Rysowanie wartości pól ratownik_x, ratownik_y, tonocy_x i tonocy_y.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2016-05-07 12:01

Rejestracja: 4 lata temu

Ostatnio: 8 miesięcy temu

0

tak tak już to zrobiłem. Jak zwykle okazało się , że nie było to trudne a tylko jeszcze mało wytrwałości .
Dzięki wszystkim. Pozdrawiam

Pozostało 580 znaków

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