java用两个对话框_java 数据传递? 两个对话框之间

简介

java 数据传递,简单通过类对象传递?

两个对话框之间

Q&A

但是不知道是如何实现模态的对话框的,看了几遍也还不知道?

JDialog 第二个参数就是模态和非模态的选择

code

package dataExchange;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* A frame with a menu whose File->Connect action shows a password dialog.

*/

public class DataExchangeFrame extends JFrame {

public static final int TEXT_ROWS = 20;

public static final int TEXT_COLUMNS = 40;

private PasswordChooser dialog = null;

private JTextArea textArea;

public DataExchangeFrame() {

// construct a File menu

var mbar = new JMenuBar();

setJMenuBar(mbar);

var fileMenu = new JMenu("File");

mbar.add(fileMenu);

// add Connect and Exit menu items

var connectItem = new JMenuItem("Connect");

connectItem.addActionListener(new ConnectAction());

fileMenu.add(connectItem);

// the Exit item exits the program

var exitItem = new JMenuItem("Exit");

exitItem.addActionListener(event -> System.exit(0));

fileMenu.add(exitItem);

textArea = new JTextArea(TEXT_ROWS, TEXT_COLUMNS);

add(new JScrollPane(textArea), BorderLayout.CENTER);

pack();

}

/**

* The Connect action pops up the password dialog.

*/

private class ConnectAction implements ActionListener {

public void actionPerformed(ActionEvent event) {

// if first time, construct dialog

if (dialog == null)

dialog = new PasswordChooser();

// set default values

dialog.setUser(new User("yourname", null));

// pop up dialog

if (dialog.showDialog(DataExchangeFrame.this, "Connect")) {

// if accepted, retrieve user input

User u = dialog.getUser();

textArea.append("user name = " + u.getName() + ", password = " + (new String(u.getPassword())) + "\n");

}

}

}

}

/*

* @Author: your name

* @Date: 2020-11-08 14:59:28

* @LastEditTime: 2020-11-08 15:00:13

* @LastEditors: your name

* @Description: In User Settings Edit

* @FilePath: /java/dataExchange/DataExchangeTest.java

*/

package dataExchange;

import java.awt.*;

import javax.swing.*;

/**

* @version 1.35 2018-04-10

* @author Cay Horstmann

*/

public class DataExchangeTest {

public static void main(String[] args) {

EventQueue.invokeLater(() -> {

var frame = new DataExchangeFrame();

frame.setTitle("DataExchangeTest");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

});

}

}

package dataExchange;

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.Frame;

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

/**

* A password chooser that is shown inside a dialog.

*/

public class PasswordChooser extends JPanel {

private JTextField username;

private JPasswordField password;

private JButton okButton;

private boolean ok;

private JDialog dialog;

public PasswordChooser() {

setLayout(new BorderLayout());

// construct a panel with user name and password fields

var panel = new JPanel();

panel.setLayout(new GridLayout(2, 2));

panel.add(new JLabel("User name:"));

panel.add(username = new JTextField(""));

panel.add(new JLabel("Password:"));

panel.add(password = new JPasswordField(""));

add(panel, BorderLayout.CENTER);

// create Ok and Cancel buttons that terminate the dialog

okButton = new JButton("Ok");

okButton.addActionListener(event -> {

ok = true;

dialog.setVisible(false);

});

var cancelButton = new JButton("Cancel");

cancelButton.addActionListener(event -> dialog.setVisible(false));

// add buttons to southern border

var buttonPanel = new JPanel();

buttonPanel.add(okButton);

buttonPanel.add(cancelButton);

add(buttonPanel, BorderLayout.SOUTH);

}

/**

* Sets the dialog defaults.

*

* @param u the default user information

*/

public void setUser(User u) {

username.setText(u.getName());

}

/**

* Gets the dialog entries.

*

* @return a User object whose state represents the dialog entries

*/

public User getUser() {

return new User(username.getText(), password.getPassword());

}

/**

* Show the chooser panel in a dialog.

*

* @param parent a component in the owner frame or null

* @param title the dialog window title

*/

public boolean showDialog(Component parent, String title) {

ok = false;

// locate the owner frame

Frame owner = null;

if (parent instanceof Frame)

owner = (Frame) parent;

else

owner = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);

// if first time, or if owner has changed, make new dialog

if (dialog == null || dialog.getOwner() != owner) {

dialog = new JDialog(owner, true);

dialog.add(this);

dialog.getRootPane().setDefaultButton(okButton);

dialog.pack();

}

// set title and show dialog

dialog.setTitle(title);

dialog.setVisible(true);

return ok;

}

}

package dataExchange;

/**

* A user has a name and password. For security reasons, the password is stored

* as a char[], not a String.

*/

public class User {

private String name;

private char[] password;

public User(String aName, char[] aPassword) {

name = aName;

password = aPassword;

}

public String getName() {

return name;

}

public char[] getPassword() {

return password;

}

public void setName(String aName) {

name = aName;

}

public void setPassword(char[] aPassword) {

password = aPassword;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值