所以,我想制作一个带有JPanel的菜单屏幕,我让它工作,但是当我按下“开始”按钮时,它没有关闭菜单窗口,它只是打开一个新窗口,我该怎么做,保持它在同一个窗口,没有关闭/打开菜单窗口,或者我想关闭菜单窗口并打开游戏窗口(JPanel),当我按下开始按钮 .

这是MainClass.java

package bombermangame;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class MainClass extends JFrame{

private static final long serialVersionUID = 1L;

public static int WIDTH = 870, HEIGHT = 800;

public static JPanel menu = new Menu();

public static Listener keys = new Listener();

public MainClass(){

setContentPane(menu);

pack();

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setTitle("BomberMan V0.3");

setSize(WIDTH, HEIGHT);

setLocationRelativeTo(null);

setVisible(true);

}

public static void main(String[] args) {

new MainClass();

}

}

这是Menu.java类

package bombermangame;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Timer;

import java.util.TimerTask;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Menu extends JPanel implements ActionListener {

private static final long serialVersionUID = 1L;

private JButton startButton = new JButton("Play");

private int x = 0, y = 500;

private boolean down = false;

private boolean up = true;

private Timer timer = new Timer();

public Menu() {

setBackground(Color.blue);

startButton = new JButton("Start");

startButton.setBounds(0,0, 100, 40);

startButton.setPreferredSize(new Dimension(100, 40));

startButton.addActionListener(this);

startButton.setFocusPainted(true);

this.add(startButton);

public void actionPerformed(ActionEvent ae) {

Object a = ae.getSource();

Game game = new Game();

MainClass frm = new MainClass();

Listener keys = new Listener();

if (a == startButton) {

timer.cancel();

frm.getContentPane().remove(new Menu());

frm.addKeyListener(keys);

frm.setContentPane(game);

frm.revalidate();

frm.repaint();

game.setBackground(Color.BLACK);

game.setDoubleBuffered(true);

game.setBounds(0, 0, WIDTH, HEIGHT);

Game.running = true;

}

}

}

编辑:感谢@whiskeyspider的帮助,我了解到我制作了2帧并没有正确引用它们 . 但是现在我已经解决了,我的监听器出现了问题,当我修复它时,我的Jpanel将无法使用我的监听器 . 我已经尝试将Listener直接添加到我的Game JPanel和我的MainClass JFrame中,但两者都不会起作用 .

这是我的一些菜单类,

public void actionPerformed(ActionEvent ae) {

Object a = ae.getSource();

JPanel game = new Game();

Listener keys = new Listener();

if (a == startButton) {

timer.cancel();

MainClass.frame.getContentPane().remove(this);

MainClass.frame.setContentPane(game);

MainClass.frame.addKeyListener(keys);

game.addKeyListener(keys);

game.setBackground(Color.BLACK);

game.setDoubleBuffered(true);

game.setBounds(0, 0, WIDTH, HEIGHT);

Game.running = true;

}

}

java 关闭jpanel_从JFrame [Java]关闭JPanel窗口相关推荐

  1. java 关闭jpanel_如何在Java中关闭Jpanel程序

    我正在制作一个Java游戏,我需要一些关于如何操作的建议.如何在Java中关闭Jpanel程序 目前我使用2个不同的.java文件来制作游戏.我有一个扩展JFrame的主程序,我调用扩展JPanel的 ...

  2. java中打开的线程怎么关闭_[求助] 用线程怎么关闭运行中的窗口

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package testOfProject; import javax.swing.*; import java.awt.*; import java.a ...

  3. java菜单面板设置完能关闭_用Java创建一个屏幕外框架(或者:当所有应用程序窗口关闭时,如何避免Mac上的空白菜单)?...

    你一定要考虑WizardOfOdds非常有用的答案.正确使用 "The Application Menu"将有所帮助,并且很容易设置最小的 Info.plist开始.持久的文件菜单 ...

  4. Java实现雪景图-Java项目实践学习-涉及Jframe/Jpanel等

    用Java写个简单的雪景图吧 [适合用来练手的小项目] 效果如下: 第一步 我们用idea创建一个名为Demo_snow的项目吧: 在src下创建一个包: 给包取好名: 在包里面创建两个java文件: ...

  5. java创建的窗口无法关闭_在Java中添加canvas后无法关闭窗口(Can't close window after adding canvas in Java)...

    在Java中添加canvas后无法关闭窗口(Can't close window after adding canvas in Java) public class Screen extends Ca ...

  6. Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框

    原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框 ...

  7. java中io各种流的关闭顺序

    关闭该流并释放与之关联的所有资源.在关闭该流后,再调用 read().ready().mark().reset() 或 skip() 将抛出 IOException.关闭以前关闭的流无效. publi ...

  8. socket java 发送多次 socket 已关闭_Socket客户端循环发送多条信息给服务端,发一次socket自动关闭?...

    目的:通过Socket客户端发送多条数据给服务端 错误: 我是客户端0,服务器说:欢迎您! java.net.SocketException: Socket is closed at java.net ...

  9. java关闭通道_调用map方法后,Java 7文件通道未正确关闭

    我正在研究一个sc2replay解析工具.我在MPQLIB http://code.google.com/p/mpqlib/之上构建它 不幸的是,该工具使用文件通道来读取bzip文件, 并使用map( ...

最新文章

  1. 管理云栈将会胜出吗?
  2. shell脚本中常见的一些特殊符号和作用详解
  3. 移动、联通、电信7模4G全网通
  4. 【转】家庭装修预算计算公式大全
  5. jzoj3410-[GDOI2014模拟]Tree【最小生成树,贪心】
  6. DecimalFormat很强大
  7. Device eth0 does not seem to be present,delaying initialization的解决办法
  8. 用Java实现HTTP Multipart的服务端和客户端
  9. 数据库一些开发者了解的操作
  10. Ubuntu 16.04 安装VNC服务端
  11. Redis 经典 必问21问,BAT面试都会问,你会回答吗?
  12. 软考论文写作方法及规范
  13. 21. 合并两个有序链表
  14. 在线IDE 在线编辑器
  15. 数字电路设计之低功耗设计方法六:旁路(by-passing)
  16. kotlin 属性重载
  17. amazon alexa simple demo code for libcurl
  18. Java程序员的魔法杖-Arthas 3.1.2版本发布了
  19. 量子技术将如何颠覆未来战争形态
  20. 干货!老司机带你了解网易视频云互动直播,你想看的全都有

热门文章

  1. 魔方CRM 客户关系管理源码
  2. 知识点-读取文件read(), readline(), readlines(),writelines()和去重set()
  3. 给所有前端使用的图片处理工具
  4. 安装jieba库方法
  5. 阿里巴巴如何对抗淘宝双11亿级流量?这本P9纯手打并发手册送给你
  6. 使用 DMV 进行监视_监视连接_针对 Azure SQL 数据库和 Azure SQL 托管实例进行手动性能优化
  7. 用keil刚打开项目后,跳出的与pdsc文件相关的错误解决方法
  8. cf837E(xjb)
  9. 使用 PHP PDO ODBC 示例的 Microsoft Access 数据库
  10. AlphaGo打星际,人类的胜算几何?