Hallo
Ich will ein kleines Spiel programmieren und dazu muss ich Linien auf einem Gitter zeichnen. Den Gitter und die Linien habe ich schon, aber leider sind sie zu dünn und egal welche Farbe ich einstelle, sehen sie immer gleich aus (ich weiss nicht womit das hängt, ob sie zu dünn sind oder die Farbe nicht verändert wird). Kann mir Jemand helfen und sagen wie ich den Code modifizieren muss damit ich Zeichendicke und ändert kann? Ich habe etwas von Graphics 2d, ich weiss aber nicht wie ich auf Methoden von dieser Klasse im JLabel zugreife. Die Linie die ich zeichnen will ist mit Kommentar markiert
Ich will ein kleines Spiel programmieren und dazu muss ich Linien auf einem Gitter zeichnen. Den Gitter und die Linien habe ich schon, aber leider sind sie zu dünn und egal welche Farbe ich einstelle, sehen sie immer gleich aus (ich weiss nicht womit das hängt, ob sie zu dünn sind oder die Farbe nicht verändert wird). Kann mir Jemand helfen und sagen wie ich den Code modifizieren muss damit ich Zeichendicke und ändert kann? Ich habe etwas von Graphics 2d, ich weiss aber nicht wie ich auf Methoden von dieser Klasse im JLabel zugreife. Die Linie die ich zeichnen will ist mit Kommentar markiert
Java:
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
public class Z_Game extends JFrame{
public JLabel Ein;
private JPanel panel;
ImageIcon Feld = new ImageIcon("map0.png");
public HL lol;
public int ox=0;
public int oy=0;
class HL extends JLabel{
HL(){
super();
}
public void paint(Graphics g){
g.drawImage(Feld.getImage(), 0, 0, this);
for(int i=0;i<Feld.getIconHeight();i=i+16)
g.drawLine(0,i,Feld.getIconWidth(),i);
for(int a=0;a<Feld.getIconWidth();a=a+16)
g.drawLine(a,0,a,Feld.getIconHeight());
}
}
public Z_Game(){
super();
Dimension dim =java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setLocation(dim.width/4,dim.height/4);
setUndecorated(true);
panel=new JPanel();
panel.setLayout(null);
setSize(Feld.getIconWidth(),Feld.getIconHeight());
getContentPane().add(panel);
setVisible(true);
panel.setVisible(true);
lol=new HL();
lol.setLayout(null);
panel.add(lol);
lol.getGraphics().drawLine(0, 0, 100, 100);
lol.setSize(Feld.getIconWidth(), Feld.getIconHeight());
lol.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
int nx=0;
int ny=0;
nx=e.getX();
ny=e.getY();
if (nx % 16<8)while (nx % 16!=0){nx--;}
if (nx % 16>8)while (nx % 16!=0){nx++;}
if (ny % 16<8)while (ny % 16!=0){ny--;}
if (ny % 16>8)while (ny % 16!=0){ny++;}
lol.getGraphics().setColor(new Color(255,255,255));
lol.getGraphics().drawLine(ox, oy, nx, ny); //<------- HIER
ox=nx;
oy=ny;
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
lol.setVisible(true);
}
public static void create(){
Z_Game Z=new Z_Game();
}
}