Wątek przeniesiony 2014-09-11 21:43 z Java przez bogdans.

JMenuBar - zanika losowo

0

Witam, nie dawno zrobiłem przesiadkę z c/cpp na jave i zacząłem pisać prostą aplikację okienkową i mam pewien problem, gdy tworzę menu (JMenuBar + JMenu) dla mojego okienka ono nie zawsze się pojawi. Raz odpalę aplikacje - pojawi się menu, drugi raz odpale - już jest puste całe okienko, nie ma tego menu - zniknęło. Więc w takiej sytuacji pomaga tylko ręczna zmiana rozszerzenia okna (rozszerzanie myszką) i dopiero wtedy pojawi się moje menu. No jeżeli takie rozszerzanie pomogło to musiałaby i pomóc metoda resize(); no i pomogła, ale uważam, że takie rozwiązanie problemu jest po prostu nieeleganckie. Próbowałem używać też metody repaint(), ale nie pomaga. Co zrobić, żeby za każdym odpalaniem aplikacji zawsze pojawiało się te menu (bez zanikania losowego, jak mu się tylko zachce). Na prawdę nie wiem co tu dolega, oto cały kod (2 pliki):

Plik Painter.java

package painttool;

public class Painter
{
	public static void main(String[] args)
	{
		new MainWindow();
	}
}

Plik MainWindow.java

package painttool;
import javax.swing.*;

public class MainWindow extends JFrame
{
	public MainWindow()
	{
		this.InitMain();
		this.InitMenu();
	}
	
	private void InitMain()
	{
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setTitle("Painter");
		this.setSize(700,400);
		this.setLocationRelativeTo(null);
	}
	
	private void InitMenu()
	{
		JMenuBar menuBar = new JMenuBar();
		
		JMenu menu = new JMenu("File");
		menu.add(new JMenuItem("New"));
		menuBar.add(menu);
		
		this.setJMenuBar(menuBar);
	}
}
0

Wywołuj

setVisible(true);

dopiero po umieszczeniu w oknie komponentów.
Przestaw wywołania.

    public MainWindow()
    {
        this.InitMenu();
        this.InitMain();
    }
0

ok dzięki

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