Wątek przeniesiony 2017-12-12 08:34 z Java przez bogdans.

JButton[] w pętli – dodanie planszy powoduje błędy

0

Mam taki kod:

private JButton nowaGra;
private JButton[] b = new JButton[9];

private JPanel plansza()
	{
		JPanel mp = new JPanel();
		for(int i=1;i<10;i++)
		{
			b[i] = new JButton();
			b[i].addActionListener(this);
			b[i].setPreferredSize(new Dimension(20,20));
		}
		mp.setLayout(new GridLayout(3,3));
		mp.setPreferredSize(new Dimension(300,300));
		mp.add(b[1]); mp.add(b[2]); mp.add(b[3]);
		mp.add(b[4]); mp.add(b[5]); mp.add(b[6]);
		mp.add(b[7]); mp.add(b[8]); mp.add(b[9]);
		nowaGra = new JButton("Nowa gra");
		nowaGra.setPreferredSize(new Dimension(150, 50));
		mp.add(nowaGra);
		return mp;
}

i

public gra()
	{
		super();
		this.getContentPane().add(this.plansza());
	}

i wywołanie **this.getContentPane().add(this.plansza()); ** powoduje następujące błędy:

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

zakomentowanie pętli for i ustawienia buttonów rozwiązuje problem. O co chodzi?

0

Wychodzisz poza zakres tablicy b. Ona ma rozmiar 9, największy dopuszczalny indeks to 8, a Ty się odwołujesz do indeksu 9.
Dziwnie dodajesz przyciski.

private JPanel plansza()
    {
        JPanel mp = new JPanel();
        mp.setLayout(new GridLayout(3,3));
        mp.setPreferredSize(new Dimension(300,300));
        for(int i=0;i<9;i++)
        {
            b[i] = new JButton();
            b[i].addActionListener(this);
            b[i].setPreferredSize(new Dimension(20,20));
            mp.add(b[i]);
        }


        nowaGra = new JButton("Nowa gra");
        nowaGra.setPreferredSize(new Dimension(150, 50));
        mp.add(nowaGra);
        return mp;
}
0

No faktycznie głupi błąd, dzięki za odpowiedź

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