2D-Grafik versch. Rectangles aus array von textfelder zeichen

plammy

Bekanntes Mitglied
Hallo :)

Was ich machen möchte als nächstes Schritt meines Projekts ist aus einem Array von Textfelder verschiedene Rechtecke zeichnen.

Also.. Ich habe in einer Klasse Panel ein Array aus 40 Felder erstellt.

Java:
public class Panel {
        
    public static JPanel initComponents() {

        //40 Textfelder erstellen
        final ArrayList<JTextField> tFields = new ArrayList<JTextField>();
        
        for (int i=0; i<40; i++){
            JTextField tF = new JTextField();
            tF.setDocument(new IntegerField(4));  
            tFields.add(tF);
        }

        //2 Buttons erstellen
        JButton button_ok = new JButton("\u00DC"+"bernehmen");
        JButton button_reject = new JButton("L" + "\u00F6" +"schen");

         
        //Beim Druecken von den Button Uebernehmen werden die Daten aus den Textfeldern ausgelesen
        button_ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (JTextField tfs : tFields){
                    tfs.getText();
                }
            }
        });
 
        //Beim Druecken von den Button Abbrechen werden die Daten in den Textfeldern geloescht
        button_reject.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (JTextField tfs : tFields){
                    tfs.setText("");
                }
            }
        });

.....................
}


Demweiteren habe ich die Klasse DrawRectangle

Java:
public class DrawRectangle {
    
    int x;
    int y;
    int width;
    int height;
    Color color = new Color(211,111,53); //orange
    
    public DrawRectangle(int _x, int _y, int _width, int _height){
        _x = x;
        _y = y;
        _width = width;
        _height = height;
    }
    
    public void draw(Graphics g){
        g.setColor(color);
        g.drawRect(x,y,width,height);
    }
}



20 von den Textfelder sind für die x-Werte (width) und 20 für y-Werte (height) (zum besseren Verständnis sieh auch das angehängte Bild).. So.. Bei button_ok.addActionListener(new ActionListener() { sage ich ja da sollen die Werte aus den Textfelder gelesen werde.

Die Frage ist aber jetzt wie gebe ich ohne 1000 zeiligen Code die einzelnen x und y werte an dem drawrect weiter?
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    54,5 KB · Aufrufe: 41
S

SlaterB

Gast
wenn 20 für x sind und 20 für y, dann brauchst du anscheinend Wertepaare?
dafür wäre es gut zu wissen, welche zusammengehören, wie kannst du solche Informationen/ Gedanken weglassen..

mache z.B. eine Schleife mit i von 0-20,
darin hole x von TextFeld i und y von Textfeld i+20, oder bisschen anders wenn sie anders in der Liste drin sind,
zwei Listen wären hier durchaus vertretbar,

was du mit einem x + y genau machen willst schreibst du wiederum nicht,
in der Schleife könntest du ein DrawRectangle-Objekt erstellen und wieder in eine neue Liste einfügen
oder ähnliches
 

plammy

Bekanntes Mitglied
Hmm es ist iwie total kompliziert.. wenn ich was mache kann ich dann was anderes nicht mehr :D..Folgendes:

es soll jeweils ein Rechteck erstellt werden anhand von ein x,y paar. z.B. auf dem Bild zu sehen: Wenn man für den Tile1 die beiden Felder ausfüllt width bzw. x + height bzw y soll ein Rechteck auf dem Panel 4 (erstmal) erstellt werden.

Ich hatte am Anfang kein Array gehabt sonst jeden TextField einzeln definiert (sehr langen Code)

Die JPanels richtig zu positionieren also dass alles schön geordnet ist war auch eine herausforderung (letztendlich geschafft mit GroupLayout (auch sehr langen Code)


Problem wieder wenn ich jetzt auf Panel 4 zeichnen möchte muss ich das iwie in der Klasse Panel machen wo das definiert ist und iwo in dem GroupLayout verschachtelt.

Ich könnte die Textfielder in 2 schleifen trennen für x und y aber hilft mir das?

Java:
    //40 Textfelder erstellen
        final ArrayList<JTextField> tFields_x = new ArrayList<JTextField>();
        
        
        for (int i=0; i<20; i++){
            JTextField tF_x = new JTextField();
            tF_x.setDocument(new IntegerField(4));  
            tFields_x.add(tF_x);
        }
        
        final ArrayList<JTextField> tFields_y = new ArrayList<JTextField>();
        
        for (int i=20; i>40 ; i++){
            JTextField tF_y = new JTextField();
            tF_y.setDocument(new IntegerField(4));  
            tFields_y.add(tF_y);
        }

ich muss jetzt dennoch auf jeden wert fT_x und den genau dazugehörigen wert fT_y zugreifen und aus den Werten aeienn Rectangle zeichnen zu können, den ich dann letztendlich in dem Panel 4 zeichnen kann... Iwie total wirr
 
Zuletzt bearbeitet:
S

SlaterB

Gast
dann denke solange nach oder formuliere klare Sätze, bis die Verwirrung weg ist,
um in Panel4 etwas einzufügen musst du nur Panel4 als Variable verfügbar haben, fertig,
du musst nicht in irgendeinem Layout nachschauen, von den 40 Textfeldern ist das auch reichlich unabhängig,

sicher brauchst du eine Schleife dort um das x + y zu bestimmen usw., aber das steht für sich,
wenn du die Daten da gefunden und zusammengestellt hast (unabhängig von Panel4)
musst du sie nur noch mit vielleicht nur einer Zeile einfügen (da gehts dann um Panel4, aber die 40 Textfelder interessieren nicht mehr direkt, in dieser Codezeile)
 

plammy

Bekanntes Mitglied
Du meinst dann etwas in der Art?

Java:
       //Beim Druecken von den Button Uebernehmen werden die Daten aus den Textfeldern ausgelesen
        button_ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (JTextField tfs_x : tFields_x){
                    tfs_x.getText();    
                }
                for (JTextField tfs_y: tFields_y){
                    tfs_y.getText();
                }
                for (int x=0; x<20; x++){
                    for(int y=0; y<20 ; y++){
                        int width = x;    //Das stimmt noch nicht
                        int height = y;   //Das stimmt noch nicht
                    }
                }
            }
        });


int width = x; da soll an der Stelle von x der ersten wert zum beispiel von der x-Array
und int height = y als y der ersten y-wert von der y-Array initiiert werden




Und wenn es so leicht ist einfach etwas zu Panel 4 hinzuzufügen unabhängig von der rest wieso klappt das dann nicht? Es zeigt kein Fehler aber gezeichnet wird dennoch nicht??

Java:
 //Panels erstellen
        JPanel jPanel1  = new JPanel();
        JPanel jPanel2  = new JPanel();
        JPanel jPanel3 = new JPanel(); 
        JPanel jPanel4 = new JPanel();
        JPanel panel = new JPanel();

        DrawRectangle dr = new DrawRectangle(20,20,130,160);
        jPanel4.add(dr);
        
        //Layout Panel 1 erstellen
        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
       
        jPanel1.setLayout(jPanel1Layout);
        jPanel1.setBackground(color_darkgray);
        
        Border titled_border = BorderFactory.createMatteBorder(2, 2, 2, 2, color_orange);
        
        Border tb_layout = BorderFactory.createTitledBorder(titled_border, "Layout", TitledBorder.LEFT, TitledBorder.TOP,font_border, color_orange);
        jPanel1.setBorder(tb_layout);
          
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
              ...............

return panel;
Java:
public class DrawRectangle extends JPanel{
    
    int x;
    int y;
    int width;
    int height;
    Color color = new Color(211,111,53); //orange
    
    public DrawRectangle(int _x, int _y, int _width, int _height){
        _x = x;
        _y = y;
        _width = width;
        _height = height;
    }
    
    public void draw(Graphics g){
        g.setColor(color);
        g.drawRect(x,y,width,height);
    }
    

}


Java:
public class MainWindow extends JFrame {


    public MainWindow() {      
        
        setJMenuBar(Menu.MenuBar());   
        setContentPane(Panel.initComponents());
               
        pack();
        setTitle("Layout Tool");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {                 
                MainWindow ex = new MainWindow();
    
                ex.setVisible(true);
                
                
            }
        });
    }
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
puh, da fällt mir ja wirklich keine Korrektur mehr ein,
dir kann man wohl nur Musterlösungen schreiben..

Java:
       //Beim Druecken von den Button Uebernehmen werden die Daten aus den Textfeldern ausgelesen
        button_ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (int i=0; i<20; i++){
                     int x = tFields_x.get(i).getText(); // noch zu int parsen
                     int y = tFields_y.get(i).getText(); // noch zu int parsen
                     // hier was mit x + y machen, in Panel einfügen
                }
            }
        });
 

Harry Kane

Top Contributor
@TE
Deine Klasse DrawRectangle ist zwar eine Component, weil sie JPanel erweitert, gezeichnet wird aber trotzdem nix, weil deine draw-Methode nie aufgerufen wird!
Wenn Du eine spezielle JComponent hast, musst du deine zeichenlogik in die paintComponet(Graphics g) methode packen. Ausserdem must du dafür sorgen, dass deine JComponent die passende Größe zurückgibt. Letzteres erreichst dadurch dass du entweder getPreferredSize() überschreibst oder setPreferredSize(new Dimension (600, 400)) auf Deiner JComponent aufrufst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
J JFrame und versch. Displaygrößen AWT, Swing, JavaFX & SWT 2
B Thumbnails anzeigen über Bottuns mit versch. Werten AWT, Swing, JavaFX & SWT 8
C AWT die X koordinate eines Rectangles herrausfinden AWT, Swing, JavaFX & SWT 14
P setStroke komplett innerhalb eines Rectangles AWT, Swing, JavaFX & SWT 4
P Rectangles + Text AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
A 2d array AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
N Array mit JavaFX Elementen AWT, Swing, JavaFX & SWT 9
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
J index im Array aussuchen AWT, Swing, JavaFX & SWT 1
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
Viktim Array Spielfeld wird in GUI gedreht AWT, Swing, JavaFX & SWT 5
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
L JComponents in Array AWT, Swing, JavaFX & SWT 11
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
B Array Java AWT, Swing, JavaFX & SWT 0
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
K Array von einer Action zur anderen bringen AWT, Swing, JavaFX & SWT 7
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
O 2D Weltgenerieren - 2D Array AWT, Swing, JavaFX & SWT 1
W Bei Button-klick neuen button in array hinzufügen AWT, Swing, JavaFX & SWT 7
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
J 2D-Grafik String aus array wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S Swing Jcombobox und array AWT, Swing, JavaFX & SWT 6
M Swing Array aus anderer Klasse AWT, Swing, JavaFX & SWT 6
M Array grafisch darstellen AWT, Swing, JavaFX & SWT 9
V Swing Componenten Array AWT, Swing, JavaFX & SWT 3
P Grauwerte aus 3-Dimensionalem Array in Bild AWT, Swing, JavaFX & SWT 9
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
B Swing JMenuButtons mit Funktionen aus Array erstellen AWT, Swing, JavaFX & SWT 4
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
A JButton in einem Array aktualisieren AWT, Swing, JavaFX & SWT 8
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
S String Array Ausgabe im JLabel ??? AWT, Swing, JavaFX & SWT 8
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
H 2D-Grafik BufferedImage aus Integer-Array AWT, Swing, JavaFX & SWT 3
H Puzzle - Listen erstellen, array & liste vergleichen AWT, Swing, JavaFX & SWT 28
H Puzzle - Erkennen wenn gelöst (array vergleichen) AWT, Swing, JavaFX & SWT 10
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
W Swing Bei einem 2-dimensionalen array, bei mouseClicked index zuordnen AWT, Swing, JavaFX & SWT 2
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
N Swing Von 2 dimensionalem Array auf JTextfield schließen und färben AWT, Swing, JavaFX & SWT 6
H JList zeigt die Daten aus dem Array nicht an! AWT, Swing, JavaFX & SWT 13
M Swing Zweidimensionales Array mit Farben erzeugen AWT, Swing, JavaFX & SWT 16
W Button Array ? AWT, Swing, JavaFX & SWT 10
X JLabel und mehrdimensionales Array AWT, Swing, JavaFX & SWT 2
T Swing 2d Array zeichnen AWT, Swing, JavaFX & SWT 4
M ArrayList in 2D Array umfüllen AWT, Swing, JavaFX & SWT 9
F Swing String Array mit JTextArea anzeigen AWT, Swing, JavaFX & SWT 13
E ResultSet als Array an JTable übergeben AWT, Swing, JavaFX & SWT 9
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
D Pixel in ein Array einlesen AWT, Swing, JavaFX & SWT 2
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
Developer_X Verzwicktes Problemchen mit Panel-Array AWT, Swing, JavaFX & SWT 5
JavaKaffee Array auslesen in jTextPane? AWT, Swing, JavaFX & SWT 9
N Swing Problem beim Einlesen von Jtable in Array AWT, Swing, JavaFX & SWT 5
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
T Swing JTable und mehrdimensionales Array AWT, Swing, JavaFX & SWT 2
D Verschiedene ActionEvents für ein JButton-Array AWT, Swing, JavaFX & SWT 2
B Keine Änderungen an JLabel durch Array möglich AWT, Swing, JavaFX & SWT 12
W Objekt-array als Raster visualisieren AWT, Swing, JavaFX & SWT 3
C JPanel-Array in GridLayout AWT, Swing, JavaFX & SWT 4
S Array+INfoBox AWT, Swing, JavaFX & SWT 7
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
B JButton+Array AWT, Swing, JavaFX & SWT 2
R zweidim. JButton-Array in Schleife -> NullPointerExceptio AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
S Suchen im String-Array AWT, Swing, JavaFX & SWT 3
M Separator in Array AWT, Swing, JavaFX & SWT 8
C Out of Bounds Exception, Array of JTextField AWT, Swing, JavaFX & SWT 6
C JButton Array - ActionListener AWT, Swing, JavaFX & SWT 10
S SimpleAttributeSet / Array AWT, Swing, JavaFX & SWT 3
B JButton array und ActionListener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben