Problem z wyświetlaniem opcji!

0

Witajcie

Mam zainstalowany kompilator Eclipse dla Javy i mam problem który polega na tym że po skompilowaniu kodu i po otwarciu okienka nie jest wykonywane to co zostalo zaprogramowane. Np. przy wyjsciu z aplikacji nie wyswietla mi sie w ogole pytanie czy chce na pewno zamknac okno(taka opcja zostala zaprogramowana) lub wciskajac opcje Narzedzie tez nic sie nie dzieje.

Kod jest identyczny jak osoby ktora go programowala. Jej wychodzi wszystko bez problemu a mi stanelo na tym i nie chce tego wykonywac.

Oto kod:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class JoptionPanel extends JFrame implements ActionListener
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 9089184437917836240L;
	JMenuBar menuBar;
	JMenu menuPlik,menuNarzedzia,menuPomoc,menuOpcje;
	JMenuItem mOtworz,mZapisz,mWyjscie,mNarz1,mNarz2,mOpcja1,mOProgramie;
	JCheckBoxMenuItem chopcja2;
	public  JoptionPanel()
	{
		setSize(800,800);
		setTitle("Demonstracja MENU");
		
		setLayout(null);
		
		menuBar=new JMenuBar();
		
		//MENU PLIK
		menuPlik=new JMenu("Plik");
		mOtworz=new JMenuItem("Otworz");
		mZapisz=new JMenuItem("Zapisz");
		mWyjscie=new JMenuItem("Wyjscie");
		
		menuPlik.add(mOtworz);
		menuPlik.addSeparator();
		menuPlik.add(mZapisz);
		menuPlik.addSeparator();
		menuPlik.add(mWyjscie);
		
		mWyjscie.addActionListener(this);
		// skrot klawiszowy  
		mWyjscie.setAccelerator(KeyStroke.getKeyStroke("ctrl Q"));
		
		//MENU NARZEDZIA 
		menuNarzedzia=new JMenu("Narzedzia");
		mNarz1=new JMenuItem("Narzedzie1");
		mNarz1.setEnabled(false); //wylaczanie opcji menu
		mNarz2=new JMenuItem("Narzedzie2");
		mNarz2.addActionListener(this);
		
		menuNarzedzia.add(mNarz1);
		menuNarzedzia.addSeparator();
		menuNarzedzia.add(mNarz2);
		menuNarzedzia.addSeparator();
			
		//MENU OPCJE
			menuOpcje=new JMenu("Opcje"); 
			mOpcja1=new JMenuItem("Opcja1");
			chopcja2=new JCheckBoxMenuItem("Opcja 2");
			chopcja2.addActionListener(this);
			menuOpcje.add(mOpcja1);
			menuOpcje.addSeparator();
			menuOpcje.add(chopcja2);
			
			menuNarzedzia.add(menuOpcje);
		
			
		//MENU INFO POMOC
		menuPomoc=new JMenu("Pomoc");
		mOProgramie=new JMenuItem("O Programie");
		mOProgramie.addActionListener(this);
		menuPomoc.add(mOProgramie);
		
		setJMenuBar(menuBar);
		
		menuBar.add(menuPlik);
		menuBar.add(menuNarzedzia);
		menuBar.add(menuPomoc);
	}
	
	public void actionPerformed(ActionEvent e) 
	{
		Object z=e.getSource();
		
		if(z==mWyjscie)
		{
			int odpo=JOptionPane.showConfirmDialog(this, "Czy na pewno wyjsc?","Pytanie",JOptionPane.YES_NO_OPTION);
			
			if(odpo==JOptionPane.YES_OPTION)
			{
				dispose();
			}
			else if(odpo==JOptionPane.NO_OPTION)
			{
				JOptionPane.showMessageDialog(this, "Wiedzialem");
			}
		}	
		else if(z==mNarz2)
		{
			String sMetry=JOptionPane.showInputDialog("Podaj dlugosc w metrach");
			double metry=Double.parseDouble(sMetry);
			double stopy= metry/0.3048;
			String sStopy=String.format("%.3f", stopy);
			JOptionPane.showMessageDialog(this, metry+"metrow="+sStopy+ " stop");
		}
		else if(z==chopcja2)
		{
			if(chopcja2.isSelected())
			{
				mNarz1.setEnabled(true);
			}
			else if(!chopcja2.isSelected())
			{
				mNarz1.setEnabled(false);
			}
		}
		else if(z==mOProgramie)
		{
			JOptionPane.showMessageDialog(this, "Program demonstruje wykorzystanie JMenu i JMenuBar\n Wersja 1.0","Tytul", JOptionPane.WARNING_MESSAGE);
		}
	}
	
	public static void main(String[] args) 
	{
		MenuText okno=new MenuText();
		okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		okno.setVisible(true);
	}
}

PS. wieszkosci moze ten kod chodzic bez zadnych problemow. Mi niestety nie chodzi i nie wiem co jest grane.

0

Klasa na pewno nazywa się JoptionPanel? Kod sugeruje nazwę MenuText. Okienko dialogowe potwierdzające wyjście pojawia się po wyborze pozycji Wyjście z menu, po kliknięciu w krzyżyk się nie pojawia, bo tak zaprogramowałeś (setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE))

0

Tak. Tak zaprogramowałem to okienko. Problem polega na tym że pomimo tego że kod jest jaki jest ja tej opcji YES/NO nie widzę u siebie i nie mam bladego pojecia dlaczego to mi nie wyswietla.

0

Co do tej serializacji to to mi przez przypadek wyskoczyło jak sie wkurzylem. Nie chcialem tego uwzgledniac

0

Bajdurzysz, kod który zamieściłeś jest błędny - nie można go skompilować. Zatem nie wiesz czy działa, czy nie. Kod odrobinę zmieniony (zmieniona nazwa klasy z JoptionPanel na MenuText, imho, obie nazwy są raczej bezsensowne) działa poprawnie.

0

Ok. Dzieki za pokazanie błędu. Juz sie z tym uporałem.

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