Java JFrame-从keylistener类访问我的窗口
我在一个名为Core的类中创建JFrame窗口,然后主要创建如下窗口:Java JFrame-从keylistener类访问我的窗口,java,jframe,Java,Jframe,我在一个名为Core的类中创建JFrame窗口,然后主要创建如下窗口: Core window = new Core("GAME1", 0, 0, true, true); 但后来我决定使用keylistener,并创建了另一个名为Core_ControlsL的类: 我的问题是在这里: else if(keyCode == 113) { GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScr
Core window = new Core("GAME1", 0, 0, true, true);
但后来我决定使用keylistener,并创建了另一个名为Core_ControlsL的类:
我的问题是在这里:
else if(keyCode == 113)
{
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this.window);
}
我不知道如何进入窗口,所以当我按下F2键时,它会再次进入全屏
import javax.swing.UnsupportedLookAndFeelException;
这是我的main.java:
public class Main
{
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException
{
Core window = new Core("GAME1", 0, 0, true, true);
}
}
这是Core.java:
import java.awt.GraphicsEnvironment;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
public class Core extends JFrame implements ActionListener
{
private final String Game_Title;
private int Window_Width;
private int Window_Height;
private boolean isVisible;
private boolean isResizeable;
public Core(String Game_Title, int Window_Width, int Window_Height, boolean isVisible, boolean isResizeable) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
this.Game_Title = Game_Title;
this.Window_Width = Window_Height;
this.Window_Height = Window_Height;
this.isResizeable = isResizeable;
this.isVisible = isVisible;
//Create JFrame
JFrame window = new JFrame(Game_Title);
window.setSize(Window_Width, Window_Height);
window.setResizable(isResizeable);
window.setExtendedState(JFrame.MAXIMIZED_BOTH);
window.setVisible(isVisible);
window.addKeyListener(new Core_Controls());
window.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(window); // make window full screen
}
@Override
public void actionPerformed(ActionEvent e)
{
}
}
以及Core_Controls.java:
import java.awt.GraphicsEnvironment;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Core_Controls implements KeyListener
{
@Override
public void keyTyped(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
int keyCode;
keyCode = e.getKeyCode();
System.out.println(keyCode); // LLLLLL
if(keyCode == 112)
{
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(null);
}
else if(keyCode == 113)
{
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(null);
}
}
@Override
public void keyReleased(KeyEvent e)
{
}
}
将窗口传递给侦听器:
Core window = new Core("GAME1", 0, 0, true, true);
Core_ControlsL listener = new Core_ControlsL(window);
在进行此操作时,请重命名您的类,使其符合标准Java命名约定。使用完整的单词,而不是不可读的缩写。两周后,当你重新阅读自己的代码时,你会感谢自己
Swing设计用于
键绑定
。查看键绑定以了解一些基本信息,以及有关如何使用键绑定的Swing教程的链接,以及键绑定工作示例的链接。我编辑了我的代码,以便您可以确切地看到发生了什么。我今年在uni开始学习Java,我对它还是新手,任何代码优化都是非常受欢迎的。我并不是在尝试构建整个游戏,而是在练习。我仍然在尝试解决这个问题。。。。