drawOval() geht nicht!!

Status
Nicht offen für weitere Antworten.

Waxe

Mitglied
Ich hab folgendes Problem:
Ich will außerdem Kreise implementieren in Zeile 50 aber es geht nicht mit der Methode: drawOval(int x, int y, .... );

Bitte helfen!!!
Java:
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.image.*;
import java.awt.*;
import javax.swing.JApplet;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.plaf.*;import java.awt.image.*;
import java.awt.*;
import javax.swing.JApplet;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.plaf.*;
 
public class AJ {
    public static void main(String[] args) {
        AJ big = new AJ();
    }
    private Frame window;
    private boolean[][] fields;
    
    public AJ(){
        window = new Frame();
        window.add(panel);
        
        fields = new boolean[3][3]; // per default sind alle Elemente des boolean-Arrays false
        
        window.addKeyListener(new KeyAdapter(){
            public void keyReleased(KeyEvent event){
                int number = event.getKeyChar()-'0';
                if(number > 0 && number < 10){
                    fields[(number-1)%3][2-(number-1)/3] = true;
                    panel.repaint();
                }
            }
        });
        window.setBounds(100,100,300,300);
        window.setBackground(new Color(108, 194, 247));
        window.setVisible(true);  
        
        window.addKeyListener(new KeyAdapter(){
            public void keyReleased(KeyEvent event){
                char letter = event.getKeyChar();
                if((letter == 'q'))
                {
                    fields[0][0] = true;
                    
                    panel.repaint();

                }
                if((letter == 'w'))
                {
                    fields[1][0] = true;
                    panel.repaint();
                }
                if((letter == 'e'))
                {
                    fields[2][0] = true;
                    panel.repaint();
                }
                if((letter == 'a'))
                {
                    fields[0][1] = true;
                    panel.repaint();
                }
                if((letter == 's'))
                {
                    fields[1][1] = true;
                    panel.repaint();
                }
                if((letter == 'd'))
                {
                    fields[2][1] = true;
                    panel.repaint();
                }
                if((letter == '<'))
                {
                    fields[0][2] = true;
                    panel.repaint();
                }
                if((letter == 'y'))
                {
                    fields[1][2] = true;
                    panel.repaint();
                }
                if((letter == 'x'))
                {
                    fields[2][2] = true;
                    panel.repaint();
                }
            }
        });
        window.setBounds(100,100,300,300);
        window.setVisible(true);    
        window.setBackground(new Color(108, 194, 247));
    }
    
    JPanel panel = new JPanel() {
        
        public void paintComponent(Graphics g){
            super.paintComponent(g);

            
            final int fieldSize = getSize().width<getSize().height? getSize().width/3 : getSize().height/3;
 
            g.drawLine(fieldSize, 0, fieldSize, fieldSize*3);
            g.drawLine(fieldSize*2, 0, fieldSize*2, fieldSize*3);
 
            g.drawLine(0,fieldSize,fieldSize*3,fieldSize);
            g.drawLine(0,fieldSize*2,fieldSize*3,fieldSize*2);
            
    
            for(int i=0;i<fields.length;++i){
                for(int e=0;e<fields[i].length;++e){
                    if(fields[i][e]){
                      g.drawLine(i*fieldSize,e*fieldSize,i*fieldSize+90,e*fieldSize+90);
                      g.drawLine(i*fieldSize,e*fieldSize+90,i*fieldSize+90,e*fieldSize);
                    }
                }
            }
            
        }
      
    };
}
 
G

Gonzo17

Gast
Zeile 50? Da ist doch eine if-Abfrage?
Wie wärs wenn du mal die Methode, die du implementieren willst, genau an die Stelle schreibst, wo du denkst, dass sie hin soll und sagst, was nicht funktioniert? (Exception o.ä.)
 
M

MiDniGG

Gast
Ja eben. Also zeichnen solltest Du nur in der paint-Methode. Da kannst ja auch if-Abfragen einfügen... :)
 

Waxe

Mitglied
ja das is jetz vielleicht von mir blöd dargestellt.
ich will, dass in der if-Abfrage die Methode drawOval(int x, int y, .... );
asgeführt wird, d.h. wenn der Buchstabe 'q' gedrückt ist, dann soll er das Oval zeichnen.
 

Marco13

Top Contributor
Grundsätzlich und ganz pragmatisch
Java:
public class AJ 
{
    private boolean malDasDingens = false;


...
                if((letter == 'q'))
                {
                    malDasDingens = true;
                    fields[0][0] = true;
                    
                    panel.repaint();
 
                }
...
    
    JPanel panel = new JPanel() {
        
        public void paintComponent(Graphics g){
            super.paintComponent(g);
 
            if (malDasDingens) g.drawOval(....);

Das mit den Fields sieht aber SEHR befremdlich auch. Vielleicht kann jemand ein paar Tipps geben, wenn du genauer beschreibst was du vorhast...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben