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

Aktualizacja obiektu i wywołanie paintComponent

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();
         
       
        } 
0

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

0

A podpowiesz mi jak można to zrobić?

0

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

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

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