Java 重置inputmap和actionmap(键绑定)
如果创建了新的JPanel并将其添加到原始帧中,是否可以重置inputmap和actionmap?在我看来,inputmap和actionmap是静态的,这意味着它们中只有一个是由所有JPanel共享的,对吗 例: (这不起作用)Java 重置inputmap和actionmap(键绑定),java,key-bindings,Java,Key Bindings,如果创建了新的JPanel并将其添加到原始帧中,是否可以重置inputmap和actionmap?在我看来,inputmap和actionmap是静态的,这意味着它们中只有一个是由所有JPanel共享的,对吗 例: (这不起作用) 某些击键设置在roles_manager类型的变量中,以更改变量的特定值。我需要为新的roles\u manager变量重置它否,每个操作/输入映射分别由组件的每个实例维护,也许您想分享一个运行中的示例,演示您遇到的问题……新创建的JPanel默认情况下没有映射,因此
某些击键设置在roles_manager类型的变量中,以更改变量的特定值。我需要为新的roles\u manager变量重置它否,每个操作/输入映射分别由组件的每个实例维护,也许您想分享一个运行中的示例,演示您遇到的问题……新创建的JPanel默认情况下没有映射,因此,如果您遇到某种问题,它可能来自其他原因。如果你打开文档,你的实际问题可以在30秒钟内得到回答。好吧,让我们从开始,不要在EDT中睡觉,尤其不要在绘画方法中睡觉。不要在paint方法中调用repaint,这将建立一个永不结束的repaint请求循环,最终将消耗您的CPU
game_compos(main_frame frame_)
{
frame=frame_;
refresh=1000;
restart();
if_restart=false;
}
public void restart()
{
if(jp!=null)
frame.remove(jp);
jp=new JPanel();
jp.getInputMap().put(KeyStroke.getKeyStroke("N"),"restart");
jp.getActionMap().put("restart",new AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if_restart=true;
}
});
map=new map_utilities();
roles=new roles_manager(refresh,frame,map,jp);
frame.add(jp);
}
public void paintComponent(Graphics g)
{
if(if_restart)
{
if_restart=false;
restart();
}
map.draw(g);
roles.draw(g);
try
{
TimeUnit.MICROSECONDS.sleep(refresh);
}
catch(InterruptedException e)
{
Thread.currentThread().interrupt();
}
repaint();
}