Witam
Kiedyś tam dawno temu liznąłem Javę, ale to w minimalnym stopniu. Teraz chciałem do niej wrócić i postanowiłem zacząć od prostego apletu, w którym można będzie rysować. Może nie najprościej, ale tak to sobie wymyśliłem:
import java.awt.*;
import java.applet.*;
import javax.swing.JApplet;
import java.awt.event.*;
class punkt
{
int x;
int y;
punkt()
{
x=800;
y=800;
}
}
public class MyApp extends JApplet implements MouseMotionListener, MouseListener
{
int r=10;
Button wybor_grubosci = new Button("Grubosc 20"), wybor_grubosci2 = new Button("Grubosc 5"),
czysc = new Button("Czysc");
String tekst = "";
punkt srodek = new punkt();
public void init()
{
addMouseMotionListener(this);
addMouseListener(this);
setLayout(null);
wybor_grubosci.setBounds(390,480,90,20);
wybor_grubosci2.setBounds(390,450,90,20);
czysc.setBounds(390,30,90,20);
wybor_grubosci.addActionListener(new B1());
wybor_grubosci2.addActionListener(new B2());
czysc.addActionListener(new B3());
add (wybor_grubosci);
add (wybor_grubosci2);
add (czysc);
}
class B1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
r=20;
}
}
class B2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
r=5;
}
}
class B3 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Graphics.clearRect(0,0,500,500);
}
}
public void mouseDragged(MouseEvent evt)
{
srodek.x=evt.getX()-r/2;
srodek.y=evt.getY()-r/2;
int przycisk = evt.getButton();
switch(przycisk)
{
case MouseEvent.BUTTON1: Graphics.fillOval(srodek.x,srodek.y,r,r); break;
}
repaint();
}
public void mouseMoved(MouseEvent evt)
{
tekst = "Wspolrzedne: x=" + evt.getX() + ", y=" + evt.getY();
repaint();
}
public void mouseClicked(MouseEvent evt)
{
srodek.x=evt.getX()-r/2;
srodek.y=evt.getY()-r/2;
int przycisk = evt.getButton();
switch(przycisk)
{
case MouseEvent.BUTTON1: Graphics.fillOval(srodek.x,srodek.y,r,r); break;
}
}
public void mouseExited(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseReleased(MouseEvent evt) {}
public void mousePressed(MouseEvent evt) {}
public void paint(Graphics g)
{
g.clearRect(15,10,155,15);
g.drawString(tekst,20,20);
}
}
Błędy kompilacji, które otrzymuję:
C:\Users\Krzychu\Desktop\java\MyApp.java:60: non-static method clearRect(int,int,int,int) cannot be referenced from a static context
Graphics.clearRect(0,0,500,500);
^
C:\Users\Krzychu\Desktop\java\MyApp.java:72: non-static method fillOval(int,int,int,int) cannot be referenced from a static context
case MouseEvent.BUTTON1: Graphics.fillOval(srodek.x,srodek.y,r,r); break;
^
C:\Users\Krzychu\Desktop\java\MyApp.java:88: non-static method fillOval(int,int,int,int) cannot be referenced from a static context
case MouseEvent.BUTTON1: Graphics.fillOval(srodek.x,srodek.y,r,r); break;
^
3 errors
Exit code: 1
There were errors
Wiem, że mógłbym to rozwiązać używając repainta, ale nie jest mi to zbyt na rękę z pewnych powodów. Zamierzam później dodać jeszcze inne komponenty i nie wiem, czy będzie to najlepszy pomysł.
Proszę o pomoc i pozdrawiam :D