Wygenerowanie nowego JFrame

0

Witam

Mam następujący problem, muszę napisać program który po uruchomieniu wyświetli mi pierwsze okno z polem tekstowym oraz przyciskiem do pola tekstowego wpisuję liczbę i naciskam przycisk. Po naciśnięciu program utworzy nowe okno w którym wygeneruje coś jakby macierz JTextField'ów o wymiarach NxN. Nie wiem jak się do tego zabrać, napisałem takie dwie klasy ale nie wiem czy moje rozumowanie jest dobre. Proszę o pomoc albo jakieś podpowiedzi.

package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class GUI extends JFrame {

    JButton przycisk;
    JTextField poleTekstowe;
    double[][] macierz;

    public GUI() {
        initComponoments();
    }

    private void initComponoments() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(null);
        setTitle("Tytul");

        przycisk = new JButton();
        przycisk.setBounds(5, 5, 145, 45);
        przycisk.setText("Tekst");

        poleTekstowe = new JTextField();
        poleTekstowe.setBounds(5, 50, 145, 45);
        przycisk.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                setTitle("Tytul2");
                java.awt.EventQueue.invokeLater(new Runnable() {
                    public void run() {
                        int liczba = Integer.valueOf(poleTekstowe.getText());
                        new GUI2(liczba).setVisible(true);
                    }
                });
            }
        });
        add(przycisk);
        add(poleTekstowe);
    }

    public static void main(String[] args) {
        // TODO code application logic here      
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }
}
package gui;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class GUI2 extends JFrame {

    JTextField[][] pola;
    double[][] macierz;

    public GUI2(int liczba) {
        initComponoments(liczba);
    }

    private void initComponoments(int liczba) {
        setTitle("Drugi");
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pola = new JTextField[liczba][liczba];
        int x = 5, y = 5, szerokosc = 120, wysokosc = 40;
        for (int i = 0; i < pola.length; i++) {
            for (int j = 0; j < pola.length; j++) {
                pola[i][j].setBounds(x, y, szerokosc, wysokosc);
                x += 125;
                y += 45;
                add(pola[i][j]);
            }
        }
    }
}
0

nie potrzebujesz tablicy dwuwymiarowej JtextFieldów. Ja to zrobiłem w ten sposób:


class GUI2 extends JFrame {

    JTextField[] pola;
    double[][] macierz;
    int liczba;

    public GUI2(int liczba) {
        this.liczba=liczba;        
        initComponoments(liczba);
    } 
    private void initComponoments(int liczba) {
        setTitle("Drugi");       
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(200,200);
        pola= new JTextField[liczba];
        setLayout(new GridLayout(2, 2));
        for (int i = 0; i < liczba; i++) {
            add(pola[i]= new JTextField());            
        }
    }
}
0

Nie do końca o to mi chodziło, ale i tak bardzo mi to pomogło wielkie dzięki. Ja poprawiłem to tak:

 class GUI2 extends JFrame { 
    JTextField[][] pola;
    double[][] macierz;
    int liczba;
     public GUI2(int liczba) {
        this.liczba=liczba;        
        initComponoments(liczba);
    } 
    private void initComponoments(int liczba) {
        setTitle("Drugi");       
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(200,200);
        pola= new JTextField[liczba][liczba];
        setLayout(new GridLayout(liczba, liczba));
        for (int i = 0; i < liczba; i++) {
            for (int j = 0; j < liczba; j++){
                add(pola[i][j]= new JTextField());            
            }            
        }
    }
}

Dwuwymiarowa tablica JTextField'ów jednak będzie mi potrzebna, żeby w dalszej części programu mieć łatwiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0