Jepoyoyoyo Ответов: 0

Как реализовать actionlistener и windowlisetner одновременно?


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Midterms extends JFrame implements ActionListener {
		JMenuBar b = new JMenuBar();
		
		JMenu file = new JMenu("File");
		JMenu color = new JMenu("Color");
		JMenu font = new JMenu("Size");
		
		JMenuItem neww  = new JMenuItem("New");
		JMenuItem open  = new JMenuItem("Open");
		JMenuItem save  = new JMenuItem("Save");
		
		JMenuItem red = new JMenuItem("Red");
		JMenuItem blu  = new JMenuItem("Blue");
		JMenuItem gre  = new JMenuItem("Green");
		
		JMenuItem f12 = new JMenuItem("Size 12");
		JMenuItem f14 = new JMenuItem("size 14");
		JMenuItem f16 = new JMenuItem("size 16");
		Font f = new Font ("Verdana",Font.PLAIN,20);
		
		JLabel text = new JLabel("Animo LaSalle",JLabel.CENTER);
    	Container c = getContentPane();
	public Midterms(){
		
		c.setLayout(new FlowLayout());
    	c.setLayout(new BorderLayout());
    	
    	setSize(450,300);
    	setVisible(true);
    	setTitle("Mideterm Exam");
    	setLocation(30,30);
    	setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    
    	setJMenuBar(b);
    	c.add(text);
    	
    	b.add(file);
    	b.add(color);
    	b.add(font);
    	
    	file.add(open);
    	file.add(neww);
    	file.add(save);
    	
    	color.add(red);
    	color.add(blu);
    	color.add(gre);
    	
    	font.add(f12);
    	font.add(f14);
    	font.add(f16);
    	
    	//accelerators&mnemonics
    	red.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK));
		gre.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK));
		blu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK));
		
		open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
		neww.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
		save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
		
		file.setMnemonic('F');
		color.setMnemonic('C');
		font.setMnemonic('S');
		
		open.setMnemonic('O');
		neww.setMnemonic('N');
		save.setMnemonic('S');
		
		red.setMnemonic('R');
		blu.setMnemonic('B');
		gre.setMnemonic('G');
		
		//events
		red.addActionListener(this);
		blu.addActionListener(this);
		gre.addActionListener(this);
		f12.addActionListener(this);
		f14.addActionListener(this);
		f16.addActionListener(this);
	
		
	}
	@Override
	public void actionPerformed(ActionEvent e){
		
		if(e.getSource() == red)
			text.setForeground(Color.red);
			
		if(e.getSource() == gre)
			text.setForeground(Color.green);
			
		if(e.getSource() == blu)
			text.setForeground(Color.blue);
			
		if(e.getSource() == f12)
			text.setFont(new Font("Arial", Font.PLAIN, 12));
			
		if(e.getSource() == f14)
			text.setFont(new Font("Arial", Font.PLAIN, 14));
			
		if(e.getSource() == f16)
			text.setFont(new Font("Arial", Font.PLAIN, 16));
			
		
	}	
	
  	
	
		public static void main (String args[]){
					Midterms ME = new Midterms();
		}
	
	
	
	
	
}


Что я уже пробовал:

я попытался переопределить их, но ошибка говорит об ошибке: Midterms не является абстрактным и не переопределяет абстрактный метод windowDeactivated (WindowEvent) в WindowListener.

Я не хочу делать всплывающее сообщение, когда выхожу из окна, но я не могу. Заранее спасибо, ребята! :)

0 Ответов