Piszę kod do pierwszej aplikacji okienkowej w Javie z użyciem AWT i Swing pod środowiskiem Eclipse Neon 2.
Napisałem klasę Main uruchamiającą program, abstrakcyjną klasę Window służącą jako baza dla okien, które będą pojawiać się w programie, oraz klasę Menu, dziedziczącą po wspomnianej Window. Okno Menu ma sześć przycisków, jednak chcąc obsłużyć zdarzenie, poprzez kliknięcie na przycisk "Wyjście z gry" aby zamknąć okno nic się nie dzieje...
Pamiętam o umieszczeniu metody addActionListener(this) oraz zaimplementowaniu ActionListener, pozbywałem się również dziedziczenia przy konstruowaniu okien, jednak nic to nie zmieniło.
Być może mój zamysł programu jest nie odpowiedni, bo oczekuję, że po naciśnięciu poszczególnych przycisków będzie można przejść do nowego okna, otworzyć JFileChooser'a itp... Może niepotrzebnie łączę elementy AWT i Swing lub umieściłem metodę obsługi zdarzeń w nieodpowiednim miejscu bądź użyłem złego dostępu pól składowych, bo jedyne ostrzeżenie jakie widzę to: The value of the field (...) is not used, przy deklaracji JButton'ów.
Kod wraz z zaznaczeniem istotnych wg mnie linii umieszczam poniżej oraz proszę uprzejmie o pomoc ; )
public class Main {
public static void main(String[] args) {
Menu menu = new Menu("Beniaminek - Menu główne");
menu.setVisible(true);
}
}
import javax.swing.JFrame;
abstract public class Window extends JFrame {
public Window(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1280, 720);
setResizable(false);
setLocation(10, 10);
}
}
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingConstants;
final public class Menu extends Window implements ActionListener {
private JButton btnCup;
private JButton btnMatch;
private JButton btnPenalties;
private JButton btnTeam;
private JButton btnFootballer;
private JButton btnImport;
private JButton btnSave;
private JButton btnExit;
public Menu(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1280, 720);
setResizable(false);
setLocation(10, 10);
setLayout(new FlowLayout(FlowLayout.CENTER, 128, 64));
JButton btnCup = new JButton("Rozgrywki pucharowe");
Image imgCup = null;
try {
imgCup = ImageIO.read(getClass().getResource("buttons/cup.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnCup.setIcon(new ImageIcon(imgCup));
btnCup.setVerticalTextPosition(SwingConstants.BOTTOM);
btnCup.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnCup);
JButton btnMatch = new JButton("Mecz towarzyski");
Image imgMatch = null;
try {
imgMatch = ImageIO.read(getClass().getResource("buttons/match.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnMatch.setIcon(new ImageIcon(imgMatch));
btnMatch.setVerticalTextPosition(SwingConstants.BOTTOM);
btnMatch.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnMatch);
JButton btnPenalties = new JButton("Seria rzutów karnych");
Image imgPenalties = null;
try {
imgPenalties = ImageIO.read(getClass().getResource("buttons/penalties.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnPenalties.setIcon(new ImageIcon(imgPenalties));
btnPenalties.setVerticalTextPosition(SwingConstants.BOTTOM);
btnPenalties.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnPenalties);
JButton btnTeam = new JButton("Zarządzanie drużynami");
Image imgTeam = null;
try {
imgTeam = ImageIO.read(getClass().getResource("buttons/team.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnTeam.setIcon(new ImageIcon(imgTeam));
btnTeam.setVerticalTextPosition(SwingConstants.BOTTOM);
btnTeam.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnTeam);
JButton btnFootballer = new JButton("Edycja zawodników");
Image imgFootballer = null;
try {
imgFootballer = ImageIO.read(getClass().getResource("buttons/footballer.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnFootballer.setIcon(new ImageIcon(imgFootballer));
btnFootballer.setVerticalTextPosition(SwingConstants.BOTTOM);
btnFootballer.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnFootballer);
JButton btnImport = new JButton("Wczytywanie składów");
Image imgImport = null;
try {
imgImport = ImageIO.read(getClass().getResource("buttons/book.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnImport.setIcon(new ImageIcon(imgImport));
btnImport.setVerticalTextPosition(SwingConstants.BOTTOM);
btnImport.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnImport);
JButton btnSave = new JButton("Zapisywanie składów");
Image imgSave = null;
try {
imgSave = ImageIO.read(getClass().getResource("buttons/save.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnSave.setIcon(new ImageIcon(imgSave));
btnSave.setVerticalTextPosition(SwingConstants.BOTTOM);
btnSave.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnSave);
JButton btnExit = new JButton("Wyjście z gry");
Image imgExit = null;
try {
imgExit = ImageIO.read(getClass().getResource("buttons/exit.png"));
} catch (IOException e) {
e.printStackTrace();
}
btnExit.setIcon(new ImageIcon(imgExit));
btnExit.setVerticalTextPosition(SwingConstants.BOTTOM);
btnExit.setHorizontalTextPosition(SwingConstants.CENTER);
add(btnExit);
btnExit.addActionListener(this);
}
public void actionPerformed(ActionEvent evt) {
JButton source = (JButton) evt.getSource();
if (source == btnExit)
dispose();
}
}