Java AWT Swing18: AWT 对话框 Dialog

0b1801988f684a6183512dfa75c403f4.webp

Java AWT Swing18: AWT 对话框 Dialog

在Java图形用户界面(GUI)编程中,对话框(Dialog)是一种常用的组件,用于与用户进行交互、显示信息或者获取用户输入。Java的Abstract Window Toolkit (AWT) 提供了Dialog类来创建模态或非模态对话框,而Swing提供了JDialog类,它是基于AWT的Dialog类的扩展,提供了更多的功能和灵活性。

AWT Dialog

在AWT中,Dialog是一个独立的顶级窗口,可用于显示信息或获取用户输入。Dialog可以是模态的,即在对话框打开时阻塞其他窗口的输入;也可以是非模态的,不阻塞其他窗口。

创建Dialog

要创建一个AWT对话框,需要使用Dialog类。构造函数至少需要一个Frame作为父窗口和一个String作为对话框标题。例如:

Frame parent = new Frame();
Dialog dialog = new Dialog(parent, "Dialog Example", true); // true 表示对话框是模态的
dialog.setSize(200, 100); // 设置对话框的大小
dialog.setVisible(true); // 显示对话框

Swing JDialog

Swing提供的JDialog类比AWT的Dialog提供了更多的功能。JDialog也支持模态和非模态对话框,并且可以包含Swing组件,如JButtonJLabel等。

创建JDialog

在Swing应用程序中创建对话框,可以使用JDialog。与AWT类似,JDialog也需要一个父窗口和一个标题。此外,Swing对话框可以包含Swing组件,为用户提供丰富的交互功能。

JFrame parent = new JFrame();
JDialog dialog = new JDialog(parent, "JDialog Example", true); // true 表示对话框是模态的
dialog.setSize(250, 150); // 设置对话框的大小

// 向对话框添加组件
JLabel label = new JLabel("This is a JDialog.");
dialog.add(label);

dialog.setVisible(true); // 显示对话框

对话框的特性

  • 模态性:模态对话框会阻塞其他窗口的输入,直到对话框被关闭。非模态对话框则不会阻塞。
  • 独立性:对话框是独立于应用程序其他窗口的顶级窗口。
  • 灵活性:对话框可以包含各种组件,如文本框、按钮、标签等,提供丰富的用户交互能力。

使用场景

对话框在GUI应用程序中有广泛的用途,常见的包括:

  • 显示应用程序的通知或警告信息。
  • 收集用户输入,如登录凭证、偏好设置等。
  • 显示应用程序的帮助信息或关于页面。

总结

AWT和Swing提供的对话框是Java GUI编程中非常重要的组成部分,它们使得与用户的交互变得简单而有效。通过理解和使用这些对话框,可以为Java应用程序添加必要的用户交互功能,增强用户体验。

049110962c404593938c5d8891104cec.png

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现通讯录管理系统,可以使用 JavaAWT(Abstract Window Toolkit)和 Swing 库来设计用户界面。以下是一个简单的示例: 1. 首先,创建一个 JFrame 窗口,设置其大小和布局: ``` import javax.swing.*; import java.awt.*; public class AddressBook extends JFrame { public AddressBook() { setTitle("Address Book"); setSize(500, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); } } ``` 2. 在 JFrame 窗口中添加一个 JPanel,用于放置通讯录条目。使用 JScrollPane 包装 JPanel,以便在需要时可以滚动: ``` import javax.swing.*; import java.awt.*; public class AddressBook extends JFrame { public AddressBook() { setTitle("Address Book"); setSize(500, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); JPanel contentPane = new JPanel(); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS)); JScrollPane scrollPane = new JScrollPane(contentPane); add(scrollPane, BorderLayout.CENTER); } } ``` 3. 创建一个通讯录条目的类 AddressEntry,包括姓名、电话和电子邮件等信息: ``` public class AddressEntry { private String name; private String phoneNumber; private String email; public AddressEntry(String name, String phoneNumber, String email) { this.name = name; this.phoneNumber = phoneNumber; this.email = email; } public String getName() { return name; } public String getPhoneNumber() { return phoneNumber; } public String getEmail() { return email; } } ``` 4. 在 JPanel 中添加一个按钮,用于添加新的通讯录条目。创建一个对话框,让用户输入新条目的信息: ``` import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AddressBook extends JFrame { private JPanel contentPane; public AddressBook() { setTitle("Address Book"); setSize(500, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); contentPane = new JPanel(); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS)); JScrollPane scrollPane = new JScrollPane(contentPane); add(scrollPane, BorderLayout.CENTER); JButton addButton = new JButton("Add"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Create a dialog to get the new entry information JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3, 2)); JTextField nameField = new JTextField(); JTextField phoneField = new JTextField(); JTextField emailField = new JTextField(); panel.add(new JLabel("Name:")); panel.add(nameField); panel.add(new JLabel("Phone:")); panel.add(phoneField); panel.add(new JLabel("Email:")); panel.add(emailField); int result = JOptionPane.showConfirmDialog(null, panel, "Add New Entry", JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { // Add the new entry to the content pane AddressEntry entry = new AddressEntry(nameField.getText(), phoneField.getText(), emailField.getText()); addEntry(entry); } } }); add(addButton, BorderLayout.SOUTH); } private void addEntry(AddressEntry entry) { JLabel label = new JLabel(entry.getName() + " " + entry.getPhoneNumber() + " " + entry.getEmail()); contentPane.add(label); contentPane.revalidate(); contentPane.repaint(); } } ``` 5. 启动应用程序,显示通讯录管理系统窗口: ``` public class Main { public static void main(String[] args) { AddressBook addressBook = new AddressBook(); addressBook.setVisible(true); } } ``` 这是一个基本的通讯录管理系统,可以通过添加新的通讯录条目来扩展功能。当然,这只是一个简单的示例,真正的通讯录管理系统可能需要更复杂的功能和更多的界面元素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值