menubar "chowa się " za panel po naciśnięciu dowolnego buttona

0

Witam, pisze mały programik, mój problem polega na tym ze gdy włączam program i rozwijam menu wszystko działa, jednak gdy przycisnę przycisk(narysuje kółko lub krzyżyk- to jest właśnie ta gra :D) menu bar nie rozwija, chowa się tak jakby za panele .

tutaj kod skrócony jak tylko sie da zeby pokazac problem:

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;


public class KolkoKrzyzyk extends JFrame implements ActionListener {
	
	
	Panel etyk = new Panel();
	Panel Dol = new Panel();
	Label lab;
	Label lab2;
	int linia=0;
    public Component p1;
    public Component p2;
    public Container p;
    String kto = ("O"); 
    int fontSize=40;
    public Font font=new Font("Helvetica", Font.BOLD, fontSize);
    public Font font2=new Font("Helvetica", Font.HANGING_BASELINE, 100);
	String gracz="p1";
	String ruch="ruch oddaje: ";
	public KolkoKrzyzyk(){
	
		JMenuBar menu = new JMenuBar();

		
		
		JMenu Informacje = new JMenu ("Informacje");
		
		
		
		JMenuItem InformacjeItem1 = new JMenuItem("Zasady gry");
		JMenuItem InformacjeItem2 = new JMenuItem("Wersja");
		JMenuItem InformacjeItem3 = new JMenuItem("Autor");
		
		Informacje.add(InformacjeItem1);
		Informacje.addSeparator();
		Informacje.add(InformacjeItem2);
		Informacje.addSeparator();
		Informacje.add(InformacjeItem3);
		
		menu.add(Informacje);
		setJMenuBar(menu);
		
		InformacjeItem3.addActionListener(this);
				
		lab2 = new Label(ruch+gracz);
		lab2.setBackground(Color.LIGHT_GRAY);
		lab2.setForeground(Color.black);
		lab2.setAlignment(Label.LEFT);
		lab2.setFont(font);
		
  		Dol.setLayout(new GridLayout(1,5,1,5));
		
		Dol.add(lab2);
		
		add(Dol, BorderLayout.SOUTH);
		
		setSize(450, 450);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        p = new Panel();
        p.setLayout(new GridLayout(3, 3, 10, 10));
        p.setBackground(Color.black);
        add(p, BorderLayout.WEST);
        p1 = (new Button(" "));
        p2 = (new Button(" "));
       
        p1.setBackground(Color.white);
        p2.setBackground(Color.white);
               
        p1.setFont(font2);
        p2.setFont(font2);
       
        p.add(p1);
        p.add(p2);
       
        ((Button)p1).setActionCommand("p1");
        ((Button)p1).addActionListener(this);
        ((Button)p2).setActionCommand("p2");
        ((Button)p2).addActionListener(this);
       
        Container cp = getContentPane();
        cp.add(p);
        setVisible(true);
	}
	
    public static void main(String[] args) {
        new KolkoKrzyzyk();
    }
    
    
    
    public void actionPerformed(ActionEvent zrodlo) {
        String polecenie = zrodlo.getActionCommand();
        String cmd= zrodlo.getActionCommand();

    	if("Autor".equals(cmd))
    	JOptionPane.showMessageDialog(this, "Lewy2905","autor", JOptionPane.INFORMATION_MESSAGE);
        
        if (polecenie.equals("p1")) {
            ((Button)p1).setLabel(kto);
            ((Button)p1).removeActionListener(this);
            if (kto=="X"){
                gracz ="p1";
                lab2.setText(ruch+gracz);
            	kto = "O";
        
            }else {
            	gracz= "p2";
            	lab2.setText(ruch+gracz);
                kto = "X";
                repaint();
            }
        } else if (polecenie.equals("p2")) {
            ((Button)p2).setLabel(kto);
            ((Button)p2).removeActionListener(this);
            if (kto=="X"){
                gracz ="p1";
                lab2.setText(ruch+gracz);
            	kto = "O";
        
            }else {
            	gracz= "p2";
            	lab2.setText(ruch+gracz);
                kto = "X";
                repaint();
            }
        }
       
        
        
        
        
        
        
        
    }
}
0

daje cały kod ponieważ nie wiem gdzie może być błąd.

0

Daj ostatnią instrukcję w actionPreformed revalidate(); i usuń te dwa repaint w ifach.

0

dziękuję , bardzo mi pomogłeś.

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