簡體   English   中英

從當前JFrame打開一個新的JFrame

[英]Opening a new JFrame from a current JFrame

我正在創建一個Java應用程序,我將有一個按鈕。 當按下該按鈕時,我想要一個包含usernamepassword和其他各種字段的表單。 在該表單中有“ Save按鈕,按下該按鈕會將所有內容保存到文件並切換回第一個JFrame。

這就是我目前的做法。 這是第一個JFrame的按鈕代碼:

public class FirstJFrame extends JFrame {    
    private void newJFrameActionPerformed(java.awt.event.ActionEvent evt) {                                          
        SecondJFrame pan = new SecondJFrame();
        this.setVisible(false);
        pan.setVisible(true);
    }
}

這是第二個JFrame上“ Save按鈕的代碼:

public class SecondJFrame extends javax.swing.JFrame {
    private void goBackActionPerformed(java.awt.event.ActionEvent evt) {                                       
        SecondJFrame pan = new SecondJFrame();
        this.setVisible(false);
        pan.setVisible(true);
    }
}

這對我來說效果不錯,但我覺得我根本沒有這樣做,我可能會創建一個內存泄漏,因為我每次都在創建一個新對象。 我正在做的是正確的還是有更好的方法?

這不是最好的方式!

如果要從用戶輸入中收集一些數據,可以在輸入對話框中使用JOptionPane。 這是一個可能顯示方式的代碼示例:

import javax.swing.*;
import java.awt.event.*;

public class ShowInputDialog{
    public static void main(String[] args){
        JFrame frame = new JFrame("Input Dialog Box Frame");
        JButton button = new JButton("Show Input Dialog Box");
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                JTextField xField = new JTextField(5);
                JTextField yField = new JTextField(5);

                JPanel myPanel = new JPanel();
                myPanel.add(new JLabel("x:"));
                myPanel.add(xField);
                myPanel.add(Box.createHorizontalStrut(15)); // a spacer
                myPanel.add(new JLabel("y:"));
                myPanel.add(yField);

                int result = JOptionPane.showConfirmDialog(null, myPanel, 
                         "Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION);
                if (result == JOptionPane.OK_OPTION) {
                   System.out.println("x value: " + xField.getText());
                   System.out.println("y value: " + yField.getText());
                }
            }
        });
        JPanel panel = new JPanel();
        panel.add(button);
        frame.add(panel);
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM