我的班级关键结合剂量工作

时间:2017-06-04 16:14:59

标签: java swing class

我想让我的键绑定看起来更加优雅,所以我做了一个键绑定课程,虽然它没有工作......任何人都知道为什么? 我最近做了一个从键盘绑定到键绑定的转换,只是了解它们是如何工作的,虽然也许我不理解它100% 很高兴得到一个解释为什么类不能正常工作以及inputmap和actionmap与绑定有什么关系以及它们如何组合在一起以使代码响应击键[有在线解释虽然不够透彻]的解释  谢谢!

 import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.KeyStroke;

public class movement {
    private JComponent jt;
    private InputMap ip;
    private ActionMap ap;
    private String comm;
    private KeyStroke key;
    private int movement;
public movement(JComponent jt, InputMap ip,ActionMap ap, String comm,KeyStroke key,int movement){
    this.jt = jt;
    this.ip = ip;
    this.ap= ap;
    this.comm = comm;
    this.key = key;
    this.movement = movement;
}
public void newAction(){
    this.ip  = this.jt.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    this.ip.put(key, comm);
    this.ap = this.jt.getActionMap();
    this.ap.put(this.comm, new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            jt.setBounds(jt.getX()+movement,jt.getY() , 50, 50);

        }
    });

}
}

This is the main method:
    import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.beans.PropertyChangeListener;
import java.net.MalformedURLException;
import java.net.URL;

import javax.management.openmbean.KeyAlreadyExistsException;
import javax.swing.*;

import java.util.concurrent.TimeUnit;
public class Malario {

    public static void main(String[] args) {
    JFrame frame = new JFrame("malario");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

    frame.setVisible(true);
    frame.setSize(700, 700);
    JPanel panel = new JPanel();

    panel.setLayout(null);
    panel.setBackground(Color.blue);
    JLabel malario = new JLabel("Malario");
    malario.setOpaque(true);
    malario.setBackground(Color.green);
    panel.add(malario);

    malario.setBounds(100, 550, 50, 50);

    JLabel platform = new JLabel();
    platform.setOpaque(true);
    platform.setBounds(0,600,700,50);
    panel.add(platform);
    frame.setContentPane(panel);
    final int originalx = 100;
    final int originaly = 550;
    int currentlocx = originalx;
    int currentlocy = originaly;

movement moveRight = new movement(malario, new InputMap(), new ActionMap(), "move Right",KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT,0) , 10);

0 个答案:

没有答案