Problem z zamknięciem JFrame...

0

Witam,

Napisałem taką metodę:

public void CreateFontFrame()
	{
		// Obiekty pomocnicze
		int sizeX = 500;
		int sizeY = 80;

		// Tworzenie obiektów składających się na ramkę wyboru czcionki
		JButton apply = new JButton(this.StringApplyButton);
		JButton exit = new JButton("exit");
		JFrame frame = new JFrame(this.StringFontFrameName);
		GridLayout grid = new GridLayout(2, 3, 10, 0);
		JComboBox size = new JComboBox();
		JLabel sizeLabel = new JLabel(this.StringFontSizeLabel);
		JComboBox type = new JComboBox();
		JLabel typeLabel = new JLabel(this.StringFontTypeLabel);

		// Konfiguracja obiektów składających się na ramkę wyboru czcionki
		apply.setActionCommand(this.StringApplyButton);
		apply.addActionListener(this);

		exit.setActionCommand("duaa");
		exit.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				JFrame frame = (JFrame) ((JButton) e.getSource()).getParent();
				frame.dispose();
			}
		});

		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		frame.setLayout(grid);
		frame.setLocation((this.GE.getCenterPoint().x - (sizeX >> 1)), (this.GE.getCenterPoint().y - (sizeY >> 1)));
		frame.setResizable(false);
		frame.setSize(sizeX, sizeY);

		size.setName("size");
		type.setName("type");

		// Generacja dostępnych typów czcionek
		for(Font str: this.GE.getAllFonts())
		{
			type.addItem(str.getName());

			// Wybór aktualnego typu czcionki
			if(this.FontType.equals(str.getName()))
			{
				type.setSelectedIndex(type.getItemCount() - 1);
			}
		}

		// Generacja dostępnych rozmiarów czcionek
		for(int i = 4; i < 51; i++)
		{
			size.addItem(i);
		}

		// Wybór aktualnego rozmiaru czcionki
		size.setSelectedIndex(this.FontSize - 4);

		// 
		frame.addWindowListener(new WindowAdapter()
		{
			@Override
			public void windowOpened(WindowEvent we)
			{
				// Blokada głównej ramki aplikacji
				APNotepad.this.disable();
			}

			@Override
			public void windowClosing(WindowEvent we)
			{
				// Odblokowanie głównej ramki aplikacji
				APNotepad.this.enable();

				// Zniszczenie ramki wyboru czcionki
				((JFrame) we.getSource()).dispose();
			}
		});

		// Dodawanie obiektów do ramki wyboru czcionki
		frame.add(typeLabel);
		frame.add(sizeLabel);
		frame.add(exit);
		frame.add(type);
		frame.add(size);
		frame.add(apply);

		frame.show();
	}

Problem polega na tym, że nie potrafię zamknąć stworzonego okienka przyciskiem "exit". Fragment kodu za to odpowiedzialny:

exit.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				JFrame frame = (JFrame) ((JButton) e.getSource()).getParent();
				frame.dispose();
			}
		});

Oczywiście teraz to nie działa, a widoczny kod to tylko kolejna z moich rozpaczliwych prób rozwiązania tego problemu.
Dodam tylko, że nie chodzi mi o zamknięcie całej aplikacji "System.exit(0)", tylko jednego okienka (może ich być np 10.).

Pozdrawiam.

0
final JFrame frame = ...

// i potem 

public void actionPerformed(ActionEvent e)
                        {
                                frame.setVisible(false);
                                frame.dispose();
                        }
0

Dziękuję :)

Pozdrawiam,
Piotr.

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