rysowanie java

0

Mam problem ponieważ w głównym oknie komponencie JFrame utworzyłem JPanel1, po czym dodałem go do głównego okna.

                                JPanel Panel1 = new JPanel();

Następnie za pomącą funkcji getGraphics zwróciłem obiekt Graphics po który umożliwia mi rysowanie po JPanel1

                                g = Panel1.getGraphics();

Rysowanie odbywa się w momencie kliknięcia na Component JButton, natomiast problem tkwi w tym że w momencie kliknięcia w JButtona po raz pierwszy obraz wyrysowany ukazuje się na ułamek sekundy po czym znika, dopiero po ponownym kliknięciu obraz się wyświetla i zostaje uwidoczniony w JPanel1 na stałe.

Co zrobić aby rysunek pozostał uwidoczniony na stałe po pierwszym kliknięciu ?

0

wklej coś...(jakiś kod :) )

0

poniżej skrócony kod do maksimum, mam JFrame głowne okno aplikacji, w nim JButton oraz obsługę akcji dla niego w momencie kliknięcia przez użytkownika, poniżej funkcja:

private void ButtongenerujActionPerformed(java.awt.event.ActionEvent evt) {                                              
    

//jPanel1 to zadeklarowany Panel na którym rysujemy

Graphics g = jPanel1.getGraphics());
g.drawOval(300, 30, 80, 40);
g.drawString("Start", 330 , 50);

}

Problem tkwi w tym że w momencie kliknięcia w JButtona po raz pierwszy obraz wyrysowany ukazuje się na ułamek sekundy po czym znika, dopiero po ponownym kliknięciu obraz się wyświetla i zostaje uwidoczniony w JPanel1 na stałe. Chcę aby już po pierwszym kliknięciu wyświetlił się i został na stałe :)

0

u mnie działa w porządku
tworzysz panel i buttona

następnie podpinasz pod buttona ActionListener :
but.addActionListener(new A());

gdzie A :

    class A implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            Graphics g = pan.getGraphics();
            g.drawOval(300, 30, 80, 40);
            g.drawString("Start", 330, 50);
        }
    }
 
0

ja piszę program w Netbeansie, wygląda to mniej więcej tak :

    Buttongeneruj.addActionListener(new java.awt.event.ActionListener() {  // Buttomgeneruj to oczywiscie Jbutton który wywołuje akcje rysowania
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ButtongenerujActionPerformed(evt);
        }
    });

Następnie jest zadeklarowana metoda

private void ButtongenerujActionPerformed(java.awt.event.ActionEvent evt) {

        Graphics g = pan.getGraphics();
        g.drawOval(300, 30, 80, 40);
        g.drawString("Start", 330, 50);
       
        // tutaj dalej na panelu rysują w sposób dynamiczny metody różne rysunki po panelu 

}

grafika tylko pokazuje się na ułamek sekundy i znika :(

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