помогите найти ошибку. Программа запускается, но кнопки не реагируют на нажатия
import javax.swing.JFrame;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.*;
public class Game extends JFrame {
//static JFrame frame;
Game()
{
super("Robots see");
setVisible(true);
setSize(1400, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menu = new JMenuBar();
getContentPane().add(BorderLayout.NORTH, menu);
JMenu btn_load = new JMenu("Открыть");
JMenu btn_save = new JMenu("Сохранить");
JMenu btn_saveAs = new JMenu("Сохранить как");
JMenu btn_sets = new JMenu("Настройки");
menu.add(btn_load);
menu.add(btn_save);
menu.add(btn_saveAs);
menu.add(btn_sets);
btn_load.addActionListener(new LoadClicked(this));
}
public static void main(String[] args) throws IOException {
Game game = new Game();
}
}
class LoadClicked implements ActionListener
{
static Game game;
static BufferedImage image;
LoadClicked(Game game)
{
this.game = game;
}
public void actionPerformed(ActionEvent e)
{
String filename;
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
// Если директория выбрана, покажем ее в сообщении
try{ if (result == JFileChooser.APPROVE_OPTION )
{
filename = fileChooser.getSelectedFile().getAbsolutePath();
image = ImageIO.read(new File(filename));
}}
catch(IOException e1) { }
JPanel pane = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
};
game.add(pane);
}
}
Вот написал тестовый пример. Action - это некое действие к которому с формы можно получить доступ разными способами ( меню, панель инструментов, контекстное меню, горячие клавиши ). Поэтому сначала создаем просто действия, потом их добавляем куда нам надо. Из Вашего примера не совсем понял что в итоге вы хотели получить Menu или Toolbar, поэтому написал пример и для Menu и для Toolbar.
public static void main(String[]args){
GameFrame frame = new GameFrame();
frame.setVisible(true);
}
private static class GameFrame extends JFrame{
public GameFrame() throws HeadlessException {
init();
}
private void init(){
setTitle("Robots see");
setSize(1400, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Доступные действия
Action actionOpen = new ActionOpen();
Action actionSave = new ActionSave();
Action actionSaveAs = new ActionSaveAs();
Action actionSettings = new ActionSettings();
//Если нужно меню сделать действия доступными
//через меню
JMenuBar mainMenuBar = new JMenuBar();
JMenu menu = new JMenu("MenuName");
menu.add(actionOpen);
menu.add(actionSave);
menu.add(actionSaveAs);
menu.add(actionSettings);
mainMenuBar.add(menu);
//Если нужно сделать действия доступными через
//панель с кнопками
JToolBar mainToolBar = new JToolBar();
mainToolBar.add(actionOpen);
mainToolBar.add(actionSave);
mainToolBar.add(actionSaveAs);
mainToolBar.add(actionSettings);
//Компоновка элементов
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
topPanel.add(mainMenuBar,BorderLayout.NORTH);
topPanel.add(mainToolBar,BorderLayout.CENTER);
getContentPane().add(topPanel,BorderLayout.NORTH);
}
/**
* Открыть
*/
private class ActionOpen extends AbstractAction{
public ActionOpen() {
super("Открыть");
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Action open");
}
}
/**
* Сохранить
*/
private class ActionSave extends AbstractAction{
public ActionSave() {
super("Сохранить");
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Action save");
}
}
/**
* Сохранить как
*/
private class ActionSaveAs extends AbstractAction{
public ActionSaveAs() {
super("Сохранить как ...");
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Action save as");
}
}
/**
* Настройки
*/
private class ActionSettings extends AbstractAction{
public ActionSettings() {
super("Настройки");
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Action settings");
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо по команде выполнить запуск python скриптаНе использовал jython т
Каждый элемент массива нужно умножить с каждым элементом этого массива и проверить, является ли квадратный корень этого произведения, целым...
Как восстановить нечаянно измененный файл css на Joomla? Бэкапов не делал, кажетсяИмеется ли в системе что-либо наподобие комбинации клавиш "Ctrl+Z"...