Hallo, ich habe ein kleines Problem. Erst mal der Code:
So bis zu Zeichnung 4(also Variable welchezeichnung=3) geht alles gut. Bei Zeichnung vier habe ich es erst mit einer simplen for-Schleife und einer Variable für die Richtung versucht. Es wurde aber nichts gezeichnet. Mit dieser Lösung klappt es. Aber ab Zeichnung 5 zeigt er mir nicht mal mehr die Striche die Diagonal durchs Bild gehen an. Wisst ihr woran das Liegen kann?
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class Muster extends JFrame implements ActionListener
{
JButton bt1,bt2,bt3,bt4,bt5,bt6;
int welchezeichnung=100;
Zeichnung z;
public static void main(String[] args) {
new Muster();
}
public Muster() {
initFrame();
}
public void initFrame() {
setLayout(new BorderLayout());
setTitle("Das PROGRAMM");
JPanel panel = new JPanel(new GridLayout(1,6));
bt1 = new JButton("Kariert");
bt2 = new JButton("Stern");
bt3 = new JButton("Sternkariert");
bt4 = new JButton("Spirale 1");
bt5 = new JButton("Spirale 2");
bt6 = new JButton("Stern groß");
Font f = new Font("Arial",Font.PLAIN,16);
bt1.setFont(f);bt2.setFont(f);
bt3.setFont(f);bt4.setFont(f);
bt5.setFont(f);bt6.setFont(f);
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);
bt5.addActionListener(this);
bt6.addActionListener(this);
panel.add(bt1);
panel.add(bt2);
panel.add(bt3);
panel.add(bt4);
panel.add(bt5);
panel.add(bt6);
add("South",panel);
//Panel p=new Panel(new GridLayout(1,1));
//p.add(z);
add("Center",z=new Zeichnung());
setSize(600,600);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==bt1) {
welchezeichnung=0;
repaint();
}
if (e.getSource()==bt2) {
welchezeichnung=1;
repaint();
}
if (e.getSource()==bt3) {
welchezeichnung=2;
repaint();
}
if (e.getSource()==bt4) {
welchezeichnung=3;
repaint();
}if (e.getSource()==bt5) {
welchezeichnung=4;
repaint();
}if (e.getSource()==bt6) {
welchezeichnung=5;
repaint();
}
}
class Zeichnung extends JPanel{
Color a=Color.BLACK;
Color b=Color.WHITE;
public void paintComponent(Graphics g){
boolean zeichne=true;
g.setColor(b);
g.fillRect(0,0,this.getWidth(),this.getHeight());
if(welchezeichnung==0){
int intervallx=this.getWidth()/4;
int intervally=this.getHeight()/4;
g.setColor(a);
for(int i=0; i<4;i++){
for(int j=0; j<4;j++){
if(zeichne==true){
g.fillRect(j*intervallx,i*intervally,intervallx,intervally);
zeichne=false;
}
else{
zeichne=true;
}
}
if(zeichne==true){
zeichne=false;
}
else{
zeichne=true;
}
}
}
if(welchezeichnung==1){
g.setColor(a);
int intervallx=this.getWidth()/20;
int intervally=this.getHeight()/20;
for(int i=0;i<=20;i++){
g.drawLine(0,i*intervally,this.getWidth(),this.getHeight()-i*intervally);
g.drawLine(i*intervallx,0,this.getWidth()-i*intervallx,this.getHeight());
}
}
if(welchezeichnung==2){
int intervallx=this.getWidth()/4;
int intervally=this.getHeight()/4;
int intervall2x=intervallx/10;
int intervall2y=intervally/10;
Random rand = new Random();
int a,b,c;
for(int i=0; i<4;i++){
for(int j=0; j<4;j++){
if(zeichne==true){
a=rand.nextInt(256);
b=rand.nextInt(256);
c=rand.nextInt(256);
g.setColor(new Color(a,b,c));
for(int k=0;k<11;k++){
g.drawLine(j*intervallx,i*intervally+k*intervall2y,(j+1)*intervallx,(i+1)*intervally-k*intervall2y);
g.drawLine(j*intervallx+k*intervall2x,i*intervally,(j+1)*intervallx-k*intervall2x,(i+1)*intervally);
}
zeichne=false;
}
else{
zeichne=true;
}
}
if(zeichne==true){
zeichne=false;
}
else{
zeichne=true;
}
}
}
if(welchezeichnung==3){
//Vier Richtungen
int intervallx=this.getWidth()/100;
int intervally=this.getHeight()/100;
int x=this.getWidth()/2;
int y= this.getHeight()/2;
g.setColor(a);
int i=0;
while(i<120){
g.drawLine(x,y,x,y-i*intervally);
y=y-i*intervally;
i++;
g.drawLine(x,y,x+i*intervallx,y);
x=x+i*intervallx;
i++;
g.drawLine(x,y,x,y+i*intervally);
y=y+i*intervally;
i++;
g.drawLine(x,y,x-i*intervallx,y);
x=x-i*intervallx;
i++;
}
if(welchezeichnung==4){
//größer werdende Halbkreise
//drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
g.setColor(a);
g.drawArc(300,300,200,200,90,90);
g.drawLine(0,0,this.getWidth(),this.getHeight());
}
if(welchezeichnung==5){
int intervall=this.getHeight()/4;
int mittex=this.getWidth()/2;
int mittey=this.getHeight()/2;
g.setColor(a);
g.drawLine(0,0,this.getWidth(),this.getHeight());
}
}
}
public void setFarbe(Color c){
a=c;
}
public void setHintergrund(Color c){
b=c;
}
}
}
Zuletzt bearbeitet: