精华内容
下载资源
问答
  • 关于如何通过单击按钮关闭Java窗口:如何通过单击按钮关闭Java窗口-JavaFX Project
    2021-03-16 19:19:39

    我创建了一个JavaFX项目,并在Java Scene Builder中为第一个登录框架创建了GUI。成功登录后,必须关闭登录框架,并且下一个框架必须可见(主程序框架)。我可以使新框架出现,但不能使登录框架关闭。我尝试了dispose()之类的东西,但没有任何效果。下面是主类的代码:

    public class KuberComm extends Application {

    @Override

    public void start(Stage stage) throws Exception {

    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setResizable(false);

    stage.setTitle("Login to KuberComm");

    stage.setScene(scene);

    stage.show();

    }

    /**

    * @param args the command line arguments

    */

    public static void main(String[] args) {

    launch(args);

    }

    }

    登录按钮的处理程序位于另一个类(由NetBeans IDE制成的控制器类)中。我无法弄清楚框架的名称是什么,以便在控制器类中使用它。

    任何帮助将不胜感激!

    也许这个答案很有用。看看这个。通过控制器关闭fxml窗口

    在控制器类中给按钮命名:

    @FXML

    public Button closeButton;

    并添加此方法:

    @FXML

    public void handleCloseButtonAction(ActionEvent event) {

    Stage stage = (Stage) closeButton.getScene().getWindow();

    stage.close();

    }

    在FXML中,您需要引用按钮名称和调用onAction的方法:

    这将关闭此按钮处于打开状态的阶段。

    如果使用此方法,Platform.runLater()将不再运行来自此特定控制器的任何Runnable。不要问我为什么。

    与其他答案类似,但更精确。

    @FXML

    public void handleCloseButtonAction(ActionEvent event) {

    ((Stage)(((Button)event.getSource()).getScene().getWindow())).close();

    }

    由于某些原因,我不得不将Button强制转换为Node强制转换,但否则可以正常工作。

    使用

    stage.hide()

    如果从控制器执行此操作,则可以从舞台场景内的任何Node中获取舞台(如有必要,请FXML加载器使用的id属性将一个分配给控制器的字段) fxml中的fxml命名空间):

    Window stage = node.getScene().getWindow();

    根据文档docs.oracle.com/javase/8/javafx/api/javafx/stage/…,stage.close()等同于Window.hide()。

    @kervin那又怎样呢?两者都会关闭该阶段,但是如果使用最后一个代码段访问该阶段,则使用hide()不需要强制转换。这正是手术医生问的,不是吗???

    感谢您的答复,但最后我找到了解决方法。我用

    ((Node)(event.getSource())).getScene().getWindow().hide();

    中的

    表示成功登录。我的意思是,在出现对话框通知用户成功登录之后,该代码就在那里了。

    (为了使该行代码正常工作,我也导入了正确的内容)

    隐藏不会关闭窗口,只是处于可见模式。最好的解决方案是:

    @FXML

    private void exitButtonOnAction(ActionEvent event){

    ((Stage)(((Button)event.getSource()).getScene().getWindow())).close();

    }

    尽管

    getScene().getWindow();

    在Node上的

    将带您进入控制器的舞台,请务必注意,调用close()或hide()是等效的,并且只会使登录窗口不可见。至于使用dispose():

    此链接可能有助于清除任何混乱。

    更多相关内容
  • 主要为大家详细介绍了java实现点击按钮弹出窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了java实现点击按钮事件弹出子窗口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java单击按钮打开一个新窗口

    千次阅读 2021-02-26 13:43:09
    Java Docs获得的前一行支持的某些行如下: Although it is possible to do without a layout manager, you should use a layout manager if at all possible. A layout manager makes it easier to adjust to look...

    这是您可以做的事情,对于这种情况,您有多个窗体或Windows,您可以做的是使用JPanel,可以将此

    CardLayout设置为LayoutManager,然后您可以将两个JPanel添加到它并使用由它提供的方法.

    使用绝对定位时不要使用setBounds()这实际上不是将组件放入父容器的正确方法.而是使用setLocation(…)和setSize(…)方法.考虑不要尽可能多地使用绝对定位.从Java Docs获得的前一行支持的某些行如下:

    Although it is possible to do without a layout manager, you should use a

    layout manager if at all possible. A layout manager makes it easier to

    adjust to look-and-feel-dependent component appearances, to different

    font sizes, to a container’s changing size, and to different locales.

    Layout managers also can be reused easily by other containers, as well as

    other programs.

    因为你的程序输出在任何意义上都不是一种舒缓的体验. Atleast LayoutManager可以使您的工作更加轻松,因为您无需为每个组件指定位置和大小.尝试走过Layout Mangers Tutorials,尽快习惯它们.他们是真正的救星:-)

    以下是从您的SOURCE CODE中获取的修改代码

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class CardLayoutExample

    {

    private JPanel contentPane;

    private MyPanel panel1;

    private MyPanel2 panel2;

    private void displayGUI()

    {

    JFrame frame = new JFrame("Card Layout Example");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel contentPane = new JPanel();

    contentPane.setBorder(

    BorderFactory.createEmptyBorder(5, 5, 5, 5));

    contentPane.setLayout(new CardLayout());

    panel1 = new MyPanel(contentPane);

    panel2 = new MyPanel2();

    contentPane.add(panel1, "Panel 1");

    contentPane.add(panel2, "Panel 2");

    frame.setContentPane(contentPane);

    frame.pack();

    frame.setLocationByPlatform(true);

    frame.setVisible(true);

    }

    public static void main(String... args)

    {

    SwingUtilities.invokeLater(new Runnable()

    {

    public void run()

    {

    new CardLayoutExample().displayGUI();

    }

    });

    }

    }

    class MyPanel extends JPanel {

    private JTextField How;

    private JLabel jcomp2;

    private JLabel jcomp3;

    private JButton jcomp4;

    private JPanel contentPane;

    public MyPanel(JPanel panel) {

    contentPane = panel;

    //construct components

    How = new JTextField (1);

    jcomp2 = new JLabel ("How long were you parked?");

    jcomp3 = new JLabel ("Minutes");

    jcomp4 = new JButton ("openNewWindow");

    //adjust size and set layout

    setPreferredSize (new Dimension (315, 85));

    setLayout (null);

    //set component bounds (only needed by Absolute Positioning)

    How.setBounds (245, 50, 60, 25);

    jcomp2.setBounds (35, 30, 185, 50);

    jcomp3.setBounds (250, 30, 60, 20);

    jcomp4.setLocation(0, 0);

    jcomp4.setSize(315, 25);

    jcomp4.addActionListener( new ActionListener()

    {

    public void actionPerformed(ActionEvent e)

    {

    CardLayout cardLayout = (CardLayout) contentPane.getLayout();

    cardLayout.next(contentPane);

    }

    });

    //add components

    add (How);

    add (jcomp2);

    add (jcomp3);

    add (jcomp4);

    }

    }

    class MyPanel2 extends JPanel {

    private JButton jcomp1;

    private JButton jcomp2;

    private JButton jcomp3;

    private JTextField jcomp4;

    public MyPanel2() {

    //construct components

    jcomp1 = new JButton ("test1");

    jcomp2 = new JButton ("test2");

    jcomp3 = new JButton ("test3");

    jcomp4 = new JTextField (5);

    //adjust size and set layout

    setPreferredSize (new Dimension (395, 156));

    setLayout (null);

    //set component bounds (only needed by Absolute Positioning)

    jcomp1.setBounds (20, 45, 100, 25);

    jcomp2.setBounds (135, 60, 100, 25);

    jcomp3.setBounds (260, 35, 100, 25);

    jcomp4.setBounds (105, 115, 100, 25);

    //add components

    add (jcomp1);

    add (jcomp2);

    add (jcomp3);

    add (jcomp4);

    }

    }

    展开全文
  • 展开全部首先分析需要32313133353236313431303231363533e4b893e5b19e31333363376530的GUI技术...窗口使用(JFrame),按钮使用(JButton)。设想一个符合题目需求的场景两个窗口关联并且跳转,最常见的场景就是登陆了。...

    展开全部

    首先分析需要32313133353236313431303231363533e4b893e5b19e31333363376530的GUI技术

    java中一般使用swing 和awt技术来实现图形界面,Swing组件较多,功能比较强大,所以这里使用Swing组件来实现。窗口使用(JFrame),按钮使用(JButton)。

    设想一个符合题目需求的场景

    两个窗口关联并且跳转,最常见的场景就是登陆了。

    登陆窗口,输入用户名和密码,如果成功就跳转到主窗口

    核心逻辑,跳转窗口的关键代码

    一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。

    但是隐藏窗口,会在后面浪费系统资源。

    如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源

    代码和注释

    LoginFrame 类import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    //LoginFrame 登陆窗口  功能 实现用户登陆 ,如果成功就跳转

    //LoginFrame 继承于窗口类, 并实现ActionListener接口

    public class LoginFrame extends JFrame implements ActionListener {

    // 申明需要的组件

    JButton jb1, jb2;//按钮

    JTextField jtf1;//文本框

    JPasswordField jpf1;//密码框

    public LoginFrame() {

    // 窗口属性的设置

    setTitle("登陆窗");// 窗口标题

    setSize(300, 180);// 窗口大小

    setLocationRelativeTo(null);// 窗口居中

    setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机

    setLayout(new FlowLayout());// 设置布局流式布局

    JPanel jp = new JPanel(new GridLayout(4, 1));// 设置面板为表格布局4行1列

    // 第一行

    JPanel jp1 = new JPanel();

    JLabel jl1 = new JLabel("账号 ");

    jtf1 = new JTextField(12);

    jp1.add(jl1);

    jp1.add(jtf1);

    jp.add(jp1);

    // 第二行

    JPanel jp2 = new JPanel();

    JLabel jl2 = new JLabel("密码 ");

    jpf1 = new JPasswordField(12);

    jp2.add(jl2);

    jp2.add(jpf1);

    jp.add(jp2);

    // 第三行

    JPanel jp3 = new JPanel();

    jb1 = new JButton("登陆");

    jb1.addActionListener(this);// 添加动作响应器

    jb2 = new JButton("重置");

    jb2.addActionListener(this);// 添加动作响应器

    jp3.add(jb1);

    jp3.add(jb2);

    jp.add(jp3);

    // 第四行

    JPanel jp4 = new JPanel();

    JLabel jl3 = new JLabel("提示: 账号 admin 密码 123");

    jl3.setForeground(Color.DARK_GRAY);

    jp4.add(jl3);

    jp.add(jp4);

    add(jp);

    }

    // 动作响应

    public void actionPerformed(ActionEvent e) {

    String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理

    if (cmd.equals("登陆")) {

    String id = jtf1.getText();// 取得用户名

    String key = new String(jpf1.getPassword());// 取得密码

    if (id.equals("admin") && key.equals("123")) {// 判断是否登录成功

    // 如果登录成功

    setVisible(false);// 本窗口隐藏,

    new MainFrame(id).setVisible(true);// 新窗口显示

    dispose();//本窗口销毁,释放内存资源

    } else {

    //如果登录失败  弹出提示

    JOptionPane.showMessageDialog(this, "用户名或者密码错误.", "通知", JOptionPane.ERROR_MESSAGE);

    clearText();//清空文本框 密码框的输入

    }

    } else if (cmd.equals("重置")) {

    clearText();

    }

    }

    private void clearText() {//清空文本框, 密码框的输入

    jtf1.setText("");

    jpf1.setText("");

    }

    //main方法, 程序的入口

    public static void main(String[] args) {

    new LoginFrame().setVisible(true);//创建登录窗口,并可见

    }

    }

    MainFrame类import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class MainFrame extends JFrame {

    public MainFrame(String name) {

    setTitle("主窗口");//标题

    setSize(300, 260);//大小

    setLocationRelativeTo(null);//居中

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel jp = new JPanel();

    JLabel jl1 = new JLabel("欢迎");

    JLabel jl2 = new JLabel(name);

    jl2.setForeground(Color.BLUE);//设置文本颜色

    JLabel jl3 = new JLabel("使用系统.");

    jp.add(jl1);

    jp.add(jl2);

    jp.add(jl3);

    add(jp, BorderLayout.NORTH);

    JTextArea jta = new JTextArea();

    jta.setLineWrap(true);

    jta.append("消息提示");

    jta.append(" 消息!通知~!");

    JScrollPane jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    add(jsp);

    JPanel jp2 = new JPanel();

    JButton jb = new JButton("退出");

    jb.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

    System.exit(0);//退出

    }

    });

    jp2.add(jb);

    add(jp2,BorderLayout.SOUTH);

    }

    }

    运行效果图

    9204290d76cee784f9605d1dcc0bdf82.png

    66887dbb58651dd0e747d224cdfa725c.png

    a6b7db7cfb644093400e503bd6335935.png

    展开全文
  • 为之前的游戏做了一个菜单的模型这是菜单类importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;...publicclassMenuextendsJFrameimplementsActionListener{//定义两个按钮pr...

    为之前的游戏做了一个菜单的模型

    这是菜单类import javax.swing.*;

    import java.awt.*;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    public class Menu extends JFrame implements ActionListener {

    //定义两个按钮

    private JButton Game_Start;

    private JButton Game_Over;

    public Menu(){

    //定义按钮的排列方式

    setLayout(new FlowLayout());

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    this.setSize(300,200);

    this.setLocation(300,400);

    Game_Start = new JButton("开始游戏");

    Game_Over = new JButton("结束游戏");

    this.add(Game_Start);

    this.add(Game_Over);

    Game_Start.addActionListener(this);

    Game_Over.addActionListener(this);

    this.setVisible(true);

    }

    public static void main(String[] args) {

    Menu menu = new Menu();

    }

    /**

    * Invoked when an action occurs.

    *

    * @param e

    */

    @Override

    public void actionPerformed(ActionEvent e) {

    if(e.getSource() == Game_Start){

    this.dispose();

    new Newframe();

    }

    if(e.getSource() == Game_Over){

    this.dispose();

    System.exit(0);

    }

    }

    }

    这是新的一个类(模拟我的游戏主类)import javax.swing.*;

    public class Newframe extends JFrame {

    public Newframe(){

    this.setSize(300,200);

    this.setLocation(300,400);

    this.setVisible(true);

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    }

    演示:

    654a406290defcce1d54657899e0147f.png

    当点击按钮开始游戏的时候,会跳转到下一个新的窗口,而点击结束游戏的时候会关闭窗口,并停止运行这个程序。

    1f237add84e20e7842cb9f0fb108a97e.png

    这个是点击开始游戏之后的新窗口 ↑ ↑ ↑

    展开全文
  • 本文实例为大家分享了Java实现点击按钮弹出窗体的功能,旧窗体不进行操作分析:对于自定义窗体来说,最简单直接的做法就是让窗体继承javax.swing.JDialog(对话框属于顶级窗口,跟JFrame同级),在创建该窗体后...
  • 展开全部其实32313133353236313431303231363533e78988e69d8331333335313762是内部类的运用,我附上了程序源码和运行结果...importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;publicclasspopu...
  • java按钮实现页面跳转 | 学步园

    千次阅读 2021-02-12 20:03:04
    假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;...
  • // 打开新窗口 }}); import javax.swing.*; import java.awt.Rectangle; import java.awt.event.*; public class Swing7 extends JFrame implements ActionListener { JButton jb = new JButton(); public Swing7...
  • 如题,现在设计一个界面,里面有一个按钮,增加ActionListener事件,点击按钮后弹出一个新的窗口,里面有更详细的信息。现在将新窗口关闭,想返回到原来的旧窗口。菜鸟一枚,请前辈指点迷津...
  • 我创建了一个JavaFX项目,并为java Scene Builder中的第一个登录框架创建了GUI.登录成功后,必须关闭登录框,并且必须显示下一帧(主程序框).我可以使框架出现,但我无法关闭登录框架.我试过像dispose()这样的东西,但...
  • 小编典典StartupWindow.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.SwingUtilities;public class ...
  • java处理按钮点击事件的方法

    千次阅读 2021-02-12 12:55:29
    例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象。AWT时间处理机制的概要:1. 监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。2. 事件源是一个能够注册监听器对象并...
  • java如何创建并设置一个按钮

    千次阅读 2021-02-12 12:19:43
    java如何创建并设置一个按钮AWT(抽象窗口工具包):是java提供用来建立和设置java的图形用户界面的基本工具Swing(轻量级的图形界面组件):是以AWT平台为基础构建起来的组件与AWT相比,Swing组件在实现时不包括任何...
  • 通过点击按钮打开窗口

    千次阅读 2020-05-26 12:21:35
    通过点击按钮打开窗口 通过点击某个按键打开窗口,原来的窗口关闭或者不关闭; 主要语句 //创建的界面 A a=new A(); //将的界面展示出来,此参数设置为true A.setVisible(true); //将旧的界面隐藏,此...
  • import wxclass MyFrame(wx.Frame):def __init__(self ):wx.Frame.__init__(self, None, -1, 'wxChoice test', size=(300, 150))colorList = ['blue','green','yellow','red']# create the dropdown boxself.choice1...
  • 这是一个例子:StartupWindow.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.SwingUtilities;public ...
  • 满意答案znzrg2013.12.24采纳率:45%等级:12已帮助:7121人在JButton 的事件中 new 一个窗口然后 设置窗口为可见的例如 dialog.setVisble(true);下面是一个示例:import java.awt.event.ActionEvent;import java....
  • importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;impor...想从登录的窗口跳转到注册的窗口,这样写点击注册为什么不跳转package view;import java.aw...
  • Java点击按钮弹出窗口(两种按钮

    万次阅读 多人点赞 2014-12-11 10:50:45
    import java.awt.Button; import java.awt.Frame; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame;
  • java – 如何向按钮添加动作?

    千次阅读 2021-03-07 23:11:54
    } } 使用此选项,您只有1个JFrame,但您可以通过不同的视图进行更改,并且不会在任务栏上烦扰具有多个窗口的用户. 这里还有一个提示:如果你要打开第二个JFrame来防止用户在第一个上做某事,你应该考虑使用JOptionPane...
  • java用户界面-关闭当前窗口解决思路

    千次阅读 2021-03-25 08:05:18
    java用户界面----关闭当前窗口我的小程序的意图是:有个界面A,界面中有若干的按钮,想要在点击其中的一个按钮的时候会出来另一个界面B,此时想要通过B中的按钮或者界面中的X号将B关闭掉现在遇到如题所示的问题在...
  • Java jframe中如何实现窗口的关闭

    千次阅读 2021-02-27 18:02:23
    展开全部效果图参考代码和注释如下32313133353236313431303231363533e59b9ee7ad9431333365633836importjava.awt.event.*;importjavax.swing.*;publicclassDemoFrameextendsJFrame{JButtonjbExit;publicDemoFrame(){...
  • Java 点击按钮下载Excel

    千次阅读 2022-03-22 14:35:15
    Java 点击按钮下载Excel

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,476
精华内容 35,790
关键字:

java按钮新窗口

java 订阅