本文目录一览:
Java如何实现关闭一个窗口弹出另外一个窗口
在Java中,对窗口任何操作都会对应的监听事件,故要实现关闭一个窗口时弹出另外一个窗口,只需要在该关闭的窗口的监听事件中添加弹窗事件即可。
具体实现如下:
this.addWindowListener(new
WindowAdapter(){
@Override
public
void
windowClosing(WindowEvent
e)
{
setVisible(false);
new
JFrame("新窗口");
}});
在JavaGUI编程中,关闭窗口弹出新窗口是很常见的动作,比如一个窗口的业务操作完成了,需要跳转到另一个窗口继续执行,此时就需要关闭旧窗口并弹出新窗事件。值得注意的地方时,有时候的关闭往往只是暂时的将旧窗口暂时隐藏,而不是真的关闭,因为之后可能还会继续用到,为了节省开销,暂时的隐藏有利于提供效率。
怎么样在java中弹出一个messagebox
在java中实现一个消息框, 常见的有两种方式
第一种方法: JOptionPane 类. 创建1个弹窗.
例一:简单的消息提示框
JOptionPane.showMessageDialog(null, "消息提示");
2.例二:带警告图片的消息提示框
JOptionPane.showMessageDialog(null, "提示消息", "标题",JOptionPane.WARNING_MESSAGE);
第二种方法 弹窗JDialog 设置setModal(true); 也可以实现. 类似于写JFrame
两者区别在于:
JOptionPane 代码简短, 适应一些普通需求, 比如弹出消息提示, 弹出警告信息, 提示用户输入, 提示用户选择, 等简单的场景
JDialog 代码略长, 组件需要自行定义. 满足一些复杂的需求. 比如多个输入框 ,多个按钮等
HMCL启动器打开时出现java弹窗,点开没响应
1、确认你的电脑是否安装了JAVA程序,如果没有就去装一个。本站下载的我的世界程序中都会集成JAVA程序,直接在根目录下找到安装即可(找到文件夹下一个茶杯图标的就是)。
2、如果即使安装了JAVA仍然提示路径错误,那么可能是你的JAVA路径设置不正确亦或是JAVA安装不正确。以旋律启动器为例检查JAVA路径中的路径是否存在问题。
一般情况下在安装JAVA时不要更改其默认路径的话是与启动器的默认路径一样的不会出什么问题,但如果你更改过路径的话就会让启动器无法识别了。通常情况下正确的默认路径为:
C:Program FilesJavajre7binjavaw.exe
而另外一点特别要注意的是64位操作系统的用户C盘中是存在着2个Program Files文件夹的,其中一个后面跟着(x86)这代表着这个文件夹中装着32位版本的系统程序。但64位系统必须要使用64位的JAVA才行,在选择游戏路径时要特别注意这点。
3、如果经过前两步依旧无法打开游戏,那么就有很大的可能是你的JAVA程序出现了问题,建议先将其卸载(在控制面板中的程序和功能中删除,不要直接删除C盘文件),之后前往JAVA官网下载最新版本的JAVA程序,网页程序会自动根据你的系统信息弹出相应版本的下载链接。
JAVA的弹窗怎么做?
JAVA弹窗,有下面常见的2种方法实现:
通过JDialog(模式窗口) 类来实现.里面的写法类似JFrame
重点方法提示: setModal(true);
//当设置为true表示,如果不关闭这个弹窗,那么主界面的其他组件都无法操作,该弹窗置于其他窗口的前面
//当设置为false表示,可以绕开本弹窗,对主界面的其他组件进行操作
优点: 功能强大, 扩展性强
缺点: 代码量大.
示例图
通过JOptionPane(提示框) 来实现
效果图如下
优点: 代码量少,简单,方便, 普通场景已经够用
缺点: 扩展性不够, 复杂逻辑难以实现.
下面写一个具体案例
场景:当用于对文本域的文字,进行操作后,那么退出时,提示用户, 是否要保存已经更改后的内容. 如果用户没有修改内容,那么不用提示
重点代码
addDocumentListener--用于实现对文本内容发生改变时进行响应
addWindowListener---用于实现对窗口进行操作时进行响应
完整代码如下
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JDDemo extends JFrame implements DocumentListener,WindowListener{
JTextArea jta;
boolean flag;
public JDDemo() {
jta = new JTextArea();//文本域
jta.setText("床前明月光");//文本域的文字--可以通过IO加载txt文档的文字
jta.setFont(new Font("宋体",Font.BOLD, 20));//文本域的字体
jta.setLineWrap(true);//设置自动换行
jta.getDocument().addDocumentListener(this);//添加文档变化事件的响应.比如修改,删除等
JScrollPane jsp = new JScrollPane(jta);//滚动面板(当文字太多时,显示滚动条)
add(jsp);
setTitle("主窗口");//标题
setSize(300, 260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//点击窗口的关闭按钮时,执行windowClosing的代码
addWindowListener(this);
setVisible(true);//窗口可见
}
public static void main(String[] args) {
new JDDemo();
}
//实现WindowListener接口,需要重写下面的6个方法, windowClosing专门处理关闭时的方法
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
if(flag){
int n = JOptionPane.showConfirmDialog(null, "已经更改了内容,需要保存后再退出吗?", "提示",JOptionPane.YES_NO_OPTION);
//n等于-1表示关闭了弹出的对话框等情况的默认值
//n等于0(JOptionPane.YES_OPTION)表示选择了Yes
//n等于1(JOptionPane.NO_OPTION)表示选择了No
if(n==JOptionPane.YES_OPTION){
//把文字保存到文件的代码省略...
System.out.println("正在使用IO进行保存..ing");
closeFrame();//关闭窗口并退出
}else if(n==JOptionPane.NO_OPTION){
System.out.println("放弃保存修改.马上退出");
closeFrame();
}
}else{
closeFrame();
}
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
//文档事件,有下面三个,如果触发其中一个,都可以认为修改了文档,所以需要在退出时进行提示,是否保存
public void insertUpdate(DocumentEvent e) {//插入
flag=true;
}
public void removeUpdate(DocumentEvent e) {//删除
flag=true;
}
public void changedUpdate(DocumentEvent e) {//改变
flag=true;
}
//关闭窗口的方法
public void closeFrame(){
this.setVisible(false);//窗口不可见
this.dispose();//窗口销毁
System.exit(0);//JVM虚拟机退出
}
}
运行效果图: