CardLayout a ustawianie polozenia buttonow

0

Jak w temacie, nie dziala mi ustawianie Jbuttonow, nic sie nie dzieje kiedy ustawiam im setBounds, one nadal pozostaja ulozone po kolei bez mojej ingerencji, co robie nie tak?

1

Wyłączasz layout?

0

Dzieki za zainteresowanie, ale jak to zrobic?

1
setLayout(null)
0

Ale nawet kiedy mam wylaczony layoout to przyciski sie ukrywaja za tlem, pojawiaja sie jak na nie najade, nawet kiedy jest puty paint to sie tak dzieje

0

Kod proszę.

0

Jak juz wspomnialem, przyciski pojawiaja sie dopiero po najechaniu na nie.

package projekt;

import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingConstants;

public class Projekt{
    private Menu menu = new Menu();
    private int szerokosc=600, wysokosc=400;
    private int szybkosc=90;
    private JFrame okno = new JFrame("Snake");
    private Plansza p;
    private JPanel kontener = new JPanel();
    private JPanel settings = new JPanel();
    public CardLayout cl = new CardLayout();
    private JButton start = new JButton("Start");
    private JButton opcje = new JButton("Opcje");
    private JButton back = new JButton("Powrot");
    private ButtonGroup rozmiar = new ButtonGroup();
    private JRadioButton mala = new JRadioButton("Mała", false);
    private JRadioButton srednia = new JRadioButton("Średnia", true);
    private JRadioButton duza = new JRadioButton("Duża", false);
    private ButtonGroup trudnosc = new ButtonGroup();
    private JRadioButton latwa = new JRadioButton("Łatwa", true);
    private JRadioButton tsrednia = new JRadioButton("Średnia", false);
    private JRadioButton trudna = new JRadioButton("Trudna", false);
    
    
    public Projekt(){
        
        start.setBounds(0, 200, 50, 70);
        start.setHorizontalTextPosition(SwingConstants.CENTER);
        latwa.setBounds(100, 100, 100, 100);
        kontener.setLayout(cl);
        kontener.setPreferredSize(new Dimension(400,400));
        
        //-------------------------
        
        menu.add(start);
        menu.add(opcje);
        menu.setLayout(null);
        start.setBounds(25,100,80,50);
        opcje.setBounds(25, 200, 80, 50);
        
        //--------------------
        
        settings.add(back);
        rozmiar.add(mala);
        rozmiar.add(srednia);
        rozmiar.add(duza);
        trudnosc.add(latwa);
        trudnosc.add(tsrednia);
        trudnosc.add(trudna);
        settings.add(latwa);
        settings.add(tsrednia);
        settings.add(trudna);
        settings.add(mala);
        settings.add(srednia);
        settings.add(duza);
        kontener.add(menu, "menu");
        kontener.add(settings, "opcje");
        cl.show(kontener, "menu");
        
        start.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                p = new Plansza(szerokosc,wysokosc,szybkosc);
                kontener.add(p,"gra");
                kontener.setPreferredSize(new Dimension(szerokosc,wysokosc));
                cl.show(kontener, "gra");
                okno.pack();
            }
        });
        
        opcje.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(kontener, "opcje");
            }
        });
        
        back.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(kontener, "menu");
            }
        });
        
        mala.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szerokosc = 400; wysokosc = 400;
            }
        });
        
        srednia.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szerokosc = 600; wysokosc = 400;
            }
        });
        
        duza.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szerokosc = 800; wysokosc = 600;
            }
        });
        
        latwa.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szybkosc = 90;
            }
        });
        
        tsrednia.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szybkosc = 70;
            }
        });
        
        trudna.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                szybkosc = 50;
            }
        });
        
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okno.setResizable(false);
        okno.setVisible(true);
        okno.setTitle("Snake");
        okno.add(kontener);
        okno.pack();
    }
    
    
    
    public static void main(String[] args) {
        Projekt pro = new Projekt();
    }
    
}
 

A tu klasa Menu z paintem:

package projekt;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Menu extends JPanel{
    
    ImageIcon iim = new ImageIcon("menu.png");
    private Image omenu;
    
    
    public Menu(){
        omenu = iim.getImage();
        
    }
    
    public void paint(Graphics g){
        g.drawImage(omenu, 100, 0, null);
    }
    
    
}

 
1

W klasie Menu zamień metodę paint na paintComponent:

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(omenu, 100, 0, null);
    }
0

Kocham Cie

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