Viereck Feld

Diskutiere Viereck Feld im Codeschnipsel u. Projekte Forum; Hallo bin momentan an nem Programm dran womit ich ein Feld mit Vierecken erstellen möchte. Habe nun aber ein Problem mit dem Array hoffe mir kann...

  1. Paul^^
    Paul^^ Neues Mitglied
    Hallo bin momentan an nem Programm dran womit ich ein Feld mit Vierecken erstellen möchte.
    Habe nun aber ein Problem mit dem Array hoffe mir kann jemand helfen.
    Code (Java):

    Klasse 1:
    import javax.swing.JFrame;
    public class Listen_Spiel{
        public Listen_Spiel(){
            JFrame frame = new JFrame("Test");
            frame.setSize(800, 800);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setResizable(false);
            frame.setLocationRelativeTo(null);
            frame.setLayout(null);
            frame.requestFocus();
            frame.setVisible(true);
       
            Zeichnen ve = new Zeichnen();
            ve.setBounds(0,0,800,800);
            ve.setVisible(true);
            frame.add(ve);
        }

    }
    Klasse 2:
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JLabel;
    import java.awt.Graphics2D;
    import java.awt.RenderingHints;
    import java.util.Scanner;
    import javax.swing.JFrame;
    public class Zeichnen extends JLabel{
        protected void paintComponent(Graphics g){
            super.paintComponent(g);
            Graphics g1[][]= new Graphics[2][2];
            Graphics2D g2d= (Graphics2D) g;

            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

            for(int i=0;i<2;i++){
                for(int j=0;j<2;j++){
               
                    g1[I][j]=g;
                    g=g;              
                    g.setColor(Color.BLACK);
                    g.fillRoundRect(10*60+i,10*60+j,50,50,20,20);
                 
                 
                 
                    repaint();
                 
                }
             
            }
       }
    }
     
    Zuletzt bearbeitet: 7. Okt. 2018
  2. Vielleicht hilft dir dieser Kurs hier weiter.
  3. mihe7
    mihe7 Bekanntes Mitglied
    Bitte schließe Deinen Code etwas formatiert in [CODE=Java]...[/CODE] ein, das kann ja kein Mensch lesen.
     
    Paul^^ gefällt das.
  4. mihe7
    mihe7 Bekanntes Mitglied
    Zum Problem: Du brauchst kein Array. Ein Graphics-Objekt reicht.

    Nachtrag: noch zwei Dinge
    1. rufe repaint() nicht in paintComponent auf
    2. in der Zeile
    Code (Text):
    g.fillRoundRect(10*60+i,10*60+j,50,50,20,20);
    addierst Du i (bzw. j) zur x- (bzw. y-)Koordinate. Bei einem Pixel Unterschied bringt das nicht wirklich viel, oder?
     
    Paul^^ gefällt das.
  5. Paul^^
    Paul^^ Neues Mitglied
    1. kann ich denn mit einem Graphics Objekt mehrere Vierecke darstellen wenn ja wie?
    ich möchte die einzelnen Vierecke später auch noch ansprechen können
    2.das funktioniert sehr wohl (habe das ganze auch schon ohne array hinbekommen kann dann aber die einzelnen nicht ansprechen)da ich ja das ganze mit 60 multipliziere und punkt vor strich gilt
    Schonmal danke für die Hilfe
     
  6. mihe7
    mihe7 Bekanntes Mitglied
    1. Klar. Stell Dir das Graphics-Objekt einfach als Zeichenfläche vor. Wenn Du die Vierecke hinterher ansprechen willst, dann bringt nichts, die Zeichenfläche viermal in ein Array zu packen :) Du musst vielmehr Deine Rechtecke mit Objekten beschreiben, diese in ein Array ablegen und in paintComponent zeichnest Du einfach die Objekte im Array.
    2. 10*60+0 = 60, 10*60+1 = 61 ....
     
    Paul^^ gefällt das.
  7. Paul^^
    Paul^^ Neues Mitglied
    1. wie würde ich denn ein einzelnes Objekt erzeugen
    2.kleiner tipp fehler + und* vertauscht ^^
     
  8. mihe7
    mihe7 Bekanntes Mitglied
    Code (Java):

    import java.awt.*;
    import javax.swing.*;

    import java.util.List;
    import java.util.ArrayList;

    public class Test extends JComponent {
        private List<Rectangle> rects = new ArrayList<>();

        public Test() {
            for (int i = 0; i < 2; i++) {
                for (int j = 0; j < 2; j++) {
                    rects.add(new Rectangle(10+60*i, 10+60*j, 50, 50));
                }
            }
        }
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2= (Graphics2D) g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setColor(Color.BLACK);
            for (Rectangle r : rects) {
                g2.fillRoundRect(r.x, r.y, r.width, r.height, 20, 20);
            }
        }

        public static void main(String[] args) throws Exception {
            SwingUtilities.invokeLater(() -> {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.add(new Test());
                frame.setVisible(true);
                frame.setSize(800, 600);
            });
        }
    }
     
     
    Paul^^ gefällt das.
  9. Paul^^
    Paul^^ Neues Mitglied
    Vielen Dank hast mir unglaublich geholfen :)
     
  10. Paul^^
    Paul^^ Neues Mitglied
    Hey Entschuldigung das ich nochmal störe wie genau spreche ich jetzt ein einziges Viereck an (ändere die Farbe von einem speziellen) ?
     
  11. Robat
    Robat Bekanntes Mitglied
    Ansprechen kannst du ein Viereck, indem du dir aus es dir aus der Liste mit der List#get(int) Methode holst.
    Wenn du die Farbe (nachträglich) ändern willst wird es schon etwas komplizierter. Da die Rectangle-Klasse keine Color-Property besitzt, müsstest du dir eine eigene Klasse schreiben, die ein Rectangle Objekt und eine Color wrapped.
    Code (Java):

    class ColoredRect {
        private Rectangle rect;
        private Color color;
    }
     
     
  12. Wenn du Java lernen möchtest, empfehlen wir dir diesen Kurs hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Viereck Feld - Ähnliche Themen

2D Array Magisches Viereck
2D Array Magisches Viereck im Forum Java Basics - Anfänger-Themen
Bewegendes Viereck ruckelt
Bewegendes Viereck ruckelt im Forum Allgemeine Java-Themen
Magisches Viereck - Probleme mit Arrays
Magisches Viereck - Probleme mit Arrays im Forum Java Basics - Anfänger-Themen
Viereck mit Sterne - Anfänger bittet um Kritik und Anregung
Viereck mit Sterne - Anfänger bittet um Kritik und Anregung im Forum Java Basics - Anfänger-Themen
Viereck zeichnen über TextField-Eingabe /ActionListener
Viereck zeichnen über TextField-Eingabe /ActionListener im Forum Java Basics - Anfänger-Themen
Thema: Viereck Feld