repaint panelu

0

Mój program mniej więcej wygląda tak :

 
class Klasagłówna extend Jframe {
// tutaj umieszczone są wszystkie zmienne 
class Step implements ActionListener {
    //tutaj obsluga klawisza po wciśnięciu którego będzie zmiana danych w ArrayList    
        }

Klasagłówna(){
//tutaj oczywiście inicjalizacja komponentów 
}
void read(long a) {
//czytanie pliku 
//long a liczba bajtow o jaką ma przeskoczyc w pliku 
}

class KlasaPanelu extends JPanel {
//rozszerzenie panelu do rysowania
 public void paintComponent(Graphics g) {
//tutaj rysujemy 
//tutaj także znajduje się metoda read wiem (i chyba jej tu nie powinno być albo powinna być jakoś uzależniona od klasy głównej)
}

}

}

dane pobieram z pliku i wpisuję do ArrayList
Chciałem zrobić coś takiego że gdy naciskam przycisk to pobiera inne dane z pliku i robi repaint()
Ale nie wiem kompletnie jak...

klasa Step wygląda mniej więcej tak

     class Step implements ActionListener {

       
        public void actionPerformed(ActionEvent e) {

           read(14048);
            drpan = new KlasaPanelu();
            drpan.repaint();

        }
    }
0

Witam

musisz podpiąć akcję pod przycisk na przykład w taki sposób:

nazwa_przycisku.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
   // tutaj instrukcje do wykonania
   read(14048);
   drpan = new KlasaPanelu().show();			
  }
});

Oczywiście uprzednio musisz utworzyć przycisk i dodać go do panelu okna.

Jeśli chodzi o drugi przypadek to możesz stworzyć tablicę przycisków, następnie zaimplementować metodę actionPerformed w klasie głównej i tam dokonać sprawdzenia który obiekt został kliknięty i potem akcję.

//oczywiście niezbędne importy
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//musisz dodać do okienka głównego do deklaracji klasy
implements ActionListener

//tworzysz tablice z przyciskami
JButton[] przyciski=new JButton[20];

//podpięcie akcji pod 

//tworzysz same przyciski
for (int i=0;i<20;i++)
{
    przyciski[i] = new JButton("nazwa"+i);
    //podpinasz teraz akcje do głównej klasy
    przyciski[i].addActionListener(this);
}

//i metoda do obsługi przycisków
public void actionPerformed(ActionEvent e) {
   if (e.getSource() == przyciski[0]) { //sprawdzamy pierwszy przycisk itd zmieniając 0 na inną liczbę
   //akcja dla przycisku 0
   }
}
0

Co do drugiego...ciekawa idea i chyba właśnie o to mi chodziło :)

Co do pierwszego :

Oczywiście miałem podpięty ActionListener do przycisku ale gdy dopisuje show() wywala błąd że typy się nie zgadzają...
wymaga KlasaPanelu a znajduje void

0

Rozwiązałem problem

repaint wykonywałem na nowo stworzonym obiekcie panelu a nie na tym który umieściłem w kostruktorze...
Błąd standardowo głupi w moim wykonaniu...:/

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