Keylistener没有使用全屏

时间:2014-04-18 07:19:45

标签: java swing keyboard fullscreen

我创建了一个程序,其中一个窗口打开,表示点击开始。当我们按下开始按钮时,它打开另一个窗口并使其全屏显示。我已将keylistener添加到此全屏窗口以移动图像。但它无法正常工作。如果你想看代码,请问我。

 public g1(){
          panel = new JPanel();
          cake = new ImageIcon("G:\\naman1.jpg").getImage();
          start = new JButton("Start");
          restart = new JButton("Restart");
          exit = new JButton("EXIT");
          panel.add(start);
          panel.setFocusable(true);
          start.addActionListener( 
                  new ActionListener() {
                    public void actionPerformed(ActionEvent arg0) {
                         new g1().run(); //this method is from superclass it calls init             }
                }
                  );
          panel.setBackground(Color.GRAY);
      }


    public void init(){
        super.init();  //it makes the window fullscreen
         Window w = s.getFullScreenWindow();
         w.setFocusable(true);
         w.addKeyListener(this);}

1 个答案:

答案 0 :(得分:0)

试试这个:

MainFrame

package moveimages;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainFrame extends JFrame {

    JButton startBtn;


    public MainFrame() {
        this.setTitle("Moving Images");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().add(initComponents());
        this.setSize(new Dimension(1024, 768));
        this.setVisible(true);
    }

    private JPanel initComponents() {
        JPanel jPanel = new JPanel();
        startBtn = new JButton("start");
        startBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                final ImageWindow imageWindow = new ImageWindow();
            }
        });
        jPanel.add(startBtn);

        return jPanel;
    }
}

这是ImageWindow

package moveimages;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

public class ImageWindow extends JFrame {

    public ImageWindow() {
        this.add(new JLabel("Window"));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        this.setSize(screenSize.width, screenSize.height);
        final ImagePanel imagePanel = new ImagePanel();
        this.getContentPane().add(imagePanel);
        this.setVisible(true);

    }

    class ImagePanel extends JPanel {

        URL url;
        int panelX;
        int panelY;
        boolean isDragged;

        ImagePanel() {

            this.panelX = this.getWidth();
            this.panelY = this.getHeight();

            try {
                this.url = new URL("http://i.stack.imgur.com/XZ4V5.jpg");
                final ImageIcon icon = new ImageIcon(url);
                final JLabel imageLabel = new JLabel(icon);

                Action moveLeft = new AbstractAction() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if(imageLabel.getX() - 1 > 0)
                            imageLabel.setLocation(imageLabel.getX()-1, imageLabel.getY());
                    }
                };

                Action moveUp = new AbstractAction() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if(imageLabel.getY() - 1 > 0) {
                            imageLabel.setLocation(imageLabel.getX(), imageLabel.getY()-1);
                        }
                    }
                };

                Action moveDown = new AbstractAction() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if(getParent().getHeight()-icon.getIconHeight() > imageLabel.getY() + 1) {
                            imageLabel.setLocation(imageLabel.getX(), imageLabel.getY()+1);
                        }
                    }
                };

                Action moveRight = new AbstractAction() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if(getParent().getWidth()-icon.getIconWidth() > imageLabel.getX()+1) {
                            imageLabel.setLocation(imageLabel.getX()+1, imageLabel.getY());
                        }
                    }
                };
                imageLabel.getInputMap().put(KeyStroke.getKeyStroke("A"), "moveLeft");
                imageLabel.getInputMap().put(KeyStroke.getKeyStroke("W"), "moveUp");
                imageLabel.getInputMap().put(KeyStroke.getKeyStroke("S"), "moveDown");
                imageLabel.getInputMap().put(KeyStroke.getKeyStroke("D"), "moveRight");
                imageLabel.getActionMap().put("moveLeft", moveLeft);
                imageLabel.getActionMap().put("moveUp", moveUp);
                imageLabel.getActionMap().put("moveDown", moveDown);
                imageLabel.getActionMap().put("moveRight", moveRight);

                this.add(imageLabel);
            } catch (MalformedURLException ex) {
                Logger.getLogger(ImageWindow.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }
}

启动应用

package moveimages;

import javax.swing.SwingUtilities;


public class MoveImages {


    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            MainFrame frame = new MainFrame();
        });
    }

}

也许它可以帮助您重构当前的应用程序。