温馨提示×

Java Swing对话框的事件处理

小樊
83
2024-08-30 07:10:16
栏目: 编程语言

在Java Swing中,对话框(JDialog)的事件处理通常涉及到以下几个方面:

  1. 监听按钮点击事件:当用户点击对话框中的按钮时,需要执行相应的操作。这可以通过为按钮添加ActionListener来实现。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Dialog Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.setVisible(true);

        JButton button = new JButton("Open Dialog");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                openDialog(frame);
            }
        });

        frame.getContentPane().add(button, BorderLayout.CENTER);
    }

    private static void openDialog(JFrame parent) {
        JDialog dialog = new JDialog(parent, "My Dialog", true);
        dialog.setSize(200, 100);

        JButton okButton = new JButton("OK");
        okButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("OK button clicked");
                dialog.dispose();
            }
        });

        JButton cancelButton = new JButton("Cancel");
        cancelButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Cancel button clicked");
                dialog.dispose();
            }
        });

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(okButton);
        buttonPanel.add(cancelButton);

        dialog.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        dialog.setLocationRelativeTo(parent);
        dialog.setVisible(true);
    }
}
  1. 监听对话框关闭事件:当用户点击对话框的关闭按钮或者按下Esc键时,可能需要执行一些操作。这可以通过为对话框添加WindowListener来实现。
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DialogExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Dialog Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.setVisible(true);

        JButton button = new JButton("Open Dialog");
        button.addActionListener(e -> openDialog(frame));

        frame.getContentPane().add(button, BorderLayout.CENTER);
    }

    private static void openDialog(JFrame parent) {
        JDialog dialog = new JDialog(parent, "My Dialog", true);
        dialog.setSize(200, 100);

        dialog.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("Dialog closed");
                dialog.dispose();
            }
        });

        JLabel label = new JLabel("This is a dialog");
        dialog.getContentPane().add(label, BorderLayout.CENTER);
        dialog.setLocationRelativeTo(parent);
        dialog.setVisible(true);
    }
}

这些示例展示了如何在Java Swing对话框中处理按钮点击和对话框关闭事件。你可以根据自己的需求进行修改和扩展。

0