Rysowanie przycisków :)

0

Witam :P
Mam problem, a mianowicie: utworzyłem pętle, w której rysują się przyciski. Problem polega na tym, że na tle rysuje się jeden wielki przycisk, a ilość przycisków nie wiem czemu ale jest losowa .
Proszę rzucić okiem na kod:

<code class="css">import java.text.DateFormatSymbols;
import java.util.*;
import javax.swing.*;

import java.awt.*; 
public class Test extends JPanel{
    
    public static void main(String[] args){
        
          JMenu menu1 = new JMenu("File"); 
          JMenu menu2 = new JMenu("Help"); 
          // Tworzenie paska wyboru
          JMenuBar bar = new JMenuBar(); 
          bar.add(menu1); 
          bar.add(menu2); 
          bar.setOpaque(true);
          bar.setBackground(Color.PINK);
          bar.setPreferredSize(new Dimension(200, 20));
          //Tworzenie okna programu
          final JFrame frame = new JFrame(); 
          frame.setJMenuBar(bar); 
          frame.setSize(600,300); 
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
          frame.setVisible(true); 
          frame.setTitle("Program:Książki");
          
          JLabel yellowLabel = new JLabel();
          yellowLabel.setOpaque(true);
          yellowLabel.setBackground(Color.BLUE);
          yellowLabel.setPreferredSize(new Dimension(200, 180));
       
          frame.setJMenuBar(bar);
          frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);
          
        
        GregorianCalendar d= new GregorianCalendar();
        int today = d.get(Calendar.DAY_OF_MONTH) ;
        int month = d.get(Calendar.MONTH);

        d.set(Calendar.DAY_OF_MONTH, 1);
        int weekday = d.get(Calendar.DAY_OF_WEEK);
        int firstDayOfWeek = d.getFirstDayOfWeek();
        int indent=0;
        
            int b=1;
              int c=1;
              
              for( int x=1; x<33; x++)
              {
                  while (weekday!= firstDayOfWeek)
                  {
                      indent++;
                      d.add(Calendar.DAY_OF_WEEK, -1);
                      weekday = d.get(Calendar.DAY_OF_WEEK);
                      
                  }
                int a = d.get(Calendar.DAY_OF_MONTH);
                d.add(Calendar.DAY_OF_MONTH, 1);
                  
                String s = Integer.toString(a);
                JButton dodaj=new JButton(s);
                dodaj.setBounds(new Rectangle(50*b, 20*c, 50, 20));
                b++;
                if(b==8)
                {
                b=1;
                c++;
                }
                frame.add(dodaj);  
              }
        
}
} 

Pozdrawiam Stagi
0

Poczytaj o menadżerach rozkładu, a zwłaszcza o domyślnym dla JFrame menadżerze BorderLayout.

0

skopiowałem twój program i uruchomiłem, na 3 uruchomienia, normalnie działało raz. Nie taki zły wynik:)

w twojej sytuacji, kiedy masz ułożenie i poziome, i pionowe, polecam menadżer Box

Box poziomo=Box.createHorizontalBox();
Box pionowo=Box.createVerticalBox();

po siedem elementów dodajesz poziomo: poziomo.add(new JButton(...));
a potem jak dodajesz pionowo: pionowo.add(poziomo);
i tak w pętelce:)

dość dobrze opisane jest w książce: JAVA 2 PODSTAWY.

0

Wielkie dzięki : D Poczytałem o menadżerach, skorzystałem z GirdLayout'u i wszystko działa jak powinno :)
Pozdrawiam

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