Problem z macierzą JButtonów...

0

Rzecz zdawałoby się banalna jednak nie działa, prosiłbym o ew rozwiązanie problemu lub chociaż skompilowanie kodu i sprawdzenie czy faktycznie nie działa ;).

Dokładniej, jak widać załączony kod powinien tworzyć na JFramie okreslona ilość kolumn i wierszy jbuttonów i w wiekszosci wypadkow faktycznie to dziala, jednak dla 4-8 (roznie to bywa) program olewa komende okreslajaca wielkosc buttona i tworzy przycisk zajmujacy caly dostepny obszar (probowalem tez z setSize, takze nie dzialalo), co gorsza, u kumpla dziala to poprawnie, przeistalowalem jdk, netbeansy, bez zmian, nie mam pomyslu co sie dzieje...

O to kod, prosilbym chociaz o potwierdzenie czy przyciski sa tworzone poprawnie czy niektore sa rozciagniete...

import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {

public Main() {
}


public static void main(String[] args) {
 JFrame okno = new JFrame();
 okno.setSize(600,600);
 okno.setVisible(true);
 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 JButton [][]cover = new JButton[20][10];
 for(int i =0;i<20;i++){
     for(int j=0;j<10;j++){
 
 cover[i][j]=new JButton();
 okno.add(cover[i][j]);
 cover[i][j].setBounds(20+20*j,20+20*i,20,20);
 cover[i][j].setVisible(true);
     }
 }
      
}

}

0

U mnie działa (java 1.6.03, Windows XP, SP1).

0

a ile razy sprawdzales? bo czasem sie udaje....

na jdk 1.5 dziala caly czas, 1,6 u3/4 sporadycznie.

0

Jeśli chcesz aby rozmiar był stały użyj setMaximumSize(d), setMinimumSize(d)

0

Niestety to nie pomogło...
najzabawniejsze jest to że ten program na jdk1.6 (sprawdzalem na dwóch komputerach) dziala absolutnie chaotycznie, potrafi się wykonać 3 razy poprawnie i 10 razy nie poprawnie...

0

Problem tkwi zapewne w tym, że nie wyłączyłeś menadżera rozkładu, a rozmieszczasz przyciski ręcznie. I jest konflikt.
Dodaj setLayout(null);

0

Dziękuję ślicznie, działa ;), tak to jest jak się programuje w języku na którego opanowanie nie było czasu...

0

null-layout, czyli pozycjonowanie absolutne jest zla praktyka i nie powinno byc stosowane (mimo, ze mozliwe). Dlaczego nie uzyc GridLayout(int, int), ktory nadaje sie tutaj idealnie?
Pozdr.

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