Luuki dzieki za kolejne zainteresowanie topiciem:]
Mam prosbe jak mogbys mi opisac jak to w ogóle dziala:
tworze przycisk
tworze klase ktora cos zmienia
przypisuje akcje przyciskowi
Mam ksiazke ale jakos "trudno" autor dalmnie to opisal:/
oto kod ktory pozmieniany, ale znow nie pelny:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class grafa
{
public static void main(String argv[])
{
okno p=new okno();
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.show();
}
}
class okno extends JFrame
{
public okno()
{
setSize(300,200);
setBackground(SystemColor.desktop);
setTitle("Programik wyswietlajacy kolka kwadraciki...");
przyciski guziki=new przyciski();
panelekRysujacy p=new panelekRysujacy();
Container pobiera=getContentPane();
pobiera.add(BorderLayout.CENTER,guziki);
pobiera.add(BorderLayout.NORTH,p);
}
}
class przyciski extends JPanel
{
public przyciski()
{
JButton kolko=new JButton("kolko");
JButton kwadrat=new JButton("kwadrat");
JButton linia=new JButton("linia");
add(kolko);
add(kwadrat);
add(linia);
//tu to co zostanie wyslane
panelekRysujacy oKolo=new panelekRysujacy(1); //tu bledy w kompilatorze
panelekRysujacy oKwadrat=new panelekRysujacy(2);//tu bledy w kompilatorze
panelekRysujacy oLinia=new panelekRysujacy(3);//tu bledy w kompilatorze
// tu guzik i jakies zadanie dalniego
kolko.addActionListener(oKolo);//tu bledy w kompilatorze
kwadrat.addActionListener(oKwadrat);//tu bledy w kompilatorze
linia.addActionListener(oLinia);//tu bledy w kompilatorze
}
}
class panelekRysujacy extends JPanel
{
public void paintComponent(Graphics g)
{
int rysujemy;
/**- w metodzie paintComponent sprawdzasz wartość zmiennej
*rysujemy i wywołujesz odpowiednie rysowanie np. g.drawLine
*chodzi to o tego ifa?*/
if(rysujemy==1)
{
g.setColor(Color.orange);
g.fillOval(100,70,60,90);
}
else if(rysujemy==2)
{
g.setColor(Color.red);
g.drawRect(70,30,20,30);
}
else if(rysujemy==3)
{
g.setColor(Color.blue);
g.drawLine(10,20,50,30);
}
}
//niewiem gdzie to wstawic?
public void actionPerformed(ActionEvent zdarzenie){
repaint();
}
}
A czym sie rozni ten kod??(w komentarzach pytania).
I jak lepiej pisac wszystko w osobnych klasach czy tak jak tu na dole?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test1 implements ActionListener{
JFrame okno;
public static void main(String args[]){
Test1 ap=new Test1();
ap.Operacja();
}
public void Operacja(){
okno=new JFrame();
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton przycisk=new JButton("Zmiana koloru");
przycisk.addActionListener(this); //co to this ??
MojPanel panel=new MojPanel();
okno.getContentPane().add(BorderLayout.SOUTH, przycisk);
okno.getContentPane().add(BorderLayout.CENTER, panel);
okno.setSize(1000,700);
okno.setVisible(true);
}
public void actionPerformed(ActionEvent zd){//kiedy to sie uruchomi??
okno.repaint();
}
}
class MojPanel extends JPanel{ //skad on wie ze to klase ma uzyc?
static boolean col=true;
public void paintComponent(Graphics g){
if(col){
g.setColor(Color.orange); col=false;
}
else{
g.setColor(Color.pink); col=true;
}
g.fillOval(100,100,500,500);
}
}