Graphics i JPanel

Odpowiedz Nowy wątek
2006-08-30 13:14
altanis_1
0

Witam
moze zaczne od kodu:
public class SwingTestingClass extends JFrame implements ActionListener
{
private JLabel l = null;
private JPanel panel1 = null;
private static BufferedImage image = null;
private static Graphics graphics = null;

public SwingTestingClass()
{
    image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
    graphics = image.getGraphics();
    graphics.setColor(new Color(0));
    graphics.drawRect(0, 0, 50, 50);
    graphics.drawImage(image, 0, 0, null);
    JFrame f = new JFrame ("hello");
    f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    Border b = new LineBorder(new Color(0),10);
    Border bor1 = new LineBorder(new Color(150),5);

    JButton b1 = new JButton ("b1");
    JButton b2 = new JButton ("b2");
    b1.setMnemonic('1');
    b2.setMnemonic('2');
    b1.addActionListener(this);
    b2.addActionListener(this);

    JPanel panel = new JPanel(new FlowLayout());
    panel.add(b1);
    panel.add(b2);
    panel.setBorder(b);
    f.getContentPane().add(panel);

    panel1 = new JPanel(new BorderLayout());
    panel1.setBackground(new Color(100,50,90));
    panel1.setBorder(bor1);
    panel1.setPreferredSize(new Dimension(100,100));
    panel1.paint(graphics);

    f.getContentPane().add(panel1);

    f.setLayout(new FlowLayout());
    f.pack();
    f.setVisible(true);
}

public static void main(String[] args) throws InvalidMidiDataException 
{
    new SwingTestingClass();
}

public void actionPerformed(ActionEvent arg0) 
{
    String cmd = arg0.getActionCommand();
    if(cmd.equals("b1"))  panel1.paintAll(graphics);
    if(cmd.equals("b2"))System.out.println("b2 has been pressed!");
}

public void paint(Graphics g)
{
    g.drawRect(0, 0, 100, 100);
}

}

i mam pytanie jak zrobic zeby np narysowac kwadrat na panelu1? chodzi mi o wykorzystanie Graphicsa.
pozdrawiam!!!

Pozostało 580 znaków

2006-08-30 13:35
0

Stworz wlasna klase dziedziczaca po JPanel i zastap metode paint(Graphics g).

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-30 14:43
altanis_1
0

Dobry pomysl ale nie do konca mi o to chodzilo. Troche mylnie tego painta na koncu umiescilem traktujcie jakby go nie bylo. Czyli zakladamy ze go tam nie ma i chodzi mi teraz o to jak najprosciej narysowac cos przy uzyciu metod Graphicsa czyli np zrobic drawArc ale zeby ten arc ktorego chce narysowac pojawil sie na panelu1? Czekam na sugestie
Pozdrawiam!!!

Pozostało 580 znaków

2006-08-30 15:01
0

Jeśli rysowanie ma odbywać się z poziomu kodu i bez wpływu użytkownika (rysowanie myszą) to rozwiązanie podał już Johny.


Pozostało 580 znaków

2006-08-30 16:06
0

Hej

Zrob tak:

  1. Stworz wlasna klase dziedziczaca JPanel w ktorej bedziesz tworzyl panel na ktorym chcesz narysowac kwadrat

  2. W tej klasie przedefiniuj metode paintComponent(Graphics g) i w tej metodzie, najpierw wywolaj super.paintComponent(g)(bo musisz wywolac ta metode z nadklasy = klasy bazowej), a potem narysuj sobie kwadrat , np.
    g.fillRect(0,0,10,10),

3.Pozniej w swoim programie stworz obiekt tej klasy, bedzie to panel z narysowanym juz kwadratem.

Pozostało 580 znaków

2006-08-30 16:19
0

podam Ci jeszcze maly przyklad:

import java.awt.;
import javax.swing.
;

class Panelik extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(10,10,50,50);
g.setColor(Color.green);
g.fillRect(20,20,50,50);
}
}

class TestPanelik extends JFrame
{
Container cp = getContentPane();

public TestPanelik()
{
    Panelik p = new Panelik();
    p.setPreferredSize(new Dimension(200,200));
    cp.add(p);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    show();
}

public static void main(String[] args)
{
    new TestPanelik();
}

}

Pozostało 580 znaków

2006-08-30 19:21
0
elcrack napisał(a)

Zrob tak:

  1. Stworz wlasna klase dziedziczaca JPanel
    ...
    bedzie to panel z narysowanym juz kwadratem.

Przeciez o tym napisalem...

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-30 20:07
0

no nie do konca bo paint to nie to samo co paintComponent, a poza tym altanis_1 po Twoim poscie dalej nie wiedział jak to napisać, wiec podalem przyklad, czasami na przykladzie lepiej widac. Pozdrawiam

Pozostało 580 znaków

2006-08-30 21:39
0
elcrack napisał(a)

no nie do konca bo paint to nie to samo co paintComponent, a poza tym altanis_1 po Twoim poscie dalej nie wiedział jak to napisać, wiec podalem przyklad, czasami na przykladzie lepiej widac. Pozdrawiam

To, ze nie skumal to fakt, ale paint i paintComponent w tym wypadku dalyby te same efekty :)

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-01 13:25
altanis_1
0

Dzieki za odpowiedzi problem rozwiazany!!!
pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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