Java applets Czyszczenie JPanel

0

Mam taki problem.
Tworze applets, kilka przycisków, gdzy wciskam jeden z przycisków za pomoca komendy
g.drawString("gdfsg",50,50);
wypisuje mi tekst na "Jpanelu"
teraz wciskam inny przycisk który ma wyczyscic jpanel z obecnego tekstu i wstawic nowy.
Da sie to zrobić za pomocą jednego przycisku??

0

Tak.

0

ok skor się da to jak to powinło wyglądać

..... // mamy action listnera

if( zrodlo == b1)
{
     g.drawString("sdfdf",50,50)
}
else if( zrodlo == b2)
{
     panel1.repain();                               // próbowałem w taki spsób ale usuwa tylko i już nie mogę wypisac innego tekstu za pomocą draw...
     g.drawString("sdfdf",50,50)
}
0

Nigdy nie rysuj w Listenerze, rysowanie musi być w funkcji paintComponent. Szkicowo:

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawString(txt,50,50);
}
//w listenerze
if(zrodlo == b1)
{
    txt = "a kuku";
}

txt jest polem w klasie

0
bogdans napisał(a):

Nigdy nie rysuj w Listenerze, rysowanie musi być w funkcji paintComponent. Szkicowo:

public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString(txt,50,50);
}
//w listenerze
if(zrodlo == b1)
{
txt = "a kuku";
}

txt jest polem w klasie

czyli najlepiej w osobnej klasie utworzyc jpanel w któym bede rysowała a w listnerze tylko go wywołać?

0

Pewnie tak, w listenerze tylko zmiana parametrów rysunku i na końcu wywołanie repaint dla panelu.

0

Co jest tutja nie tak dlaczego po załczeniu nic mi nie rysuje???

package ol;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JPanel;

public class paint extends JPanel
{
    String txt = " fsdfsd";

    public paint()
    {
        setPreferredSize(new Dimension(800,300));
        setLayout(null);
    }

    public void paintCompoment(Graphics g)
    {
        super.paintComponent(g);

        g.setColor(Color.BLACK);
        g.drawString(txt, 50, 50);
        g.drawRect(50, 50, 70, 70);
    }
}
0

Po pierwsze, na panelu służącym tylko do rysowania layout nie ma żadnego znaczenia. Instrukcja

setLayout(null);

jest całkowicie zbędna. Rada na przyszłość, zapomnij, że ta instrukcja istnieje.
Po drugie, przestrzegaj konwencji, nazwy klas powinny zaczynać się dużą literą.
Po trzecie, ten obiekt klasy paint trzeba umieścić w aplecie.

0

Obiekt klasy zamiescić w aplecie:

paint p1 = paint();

add(p1);

to ma się znajdować w aplecie??

0
Krwawy Orzeł napisał(a):

Obiekt klasy zamiescić w aplecie:


paint p1 = new paint();

add(p1);


> 
> to ma się znajdować w aplecie??

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