Java 中 JFrame 和 JDialog 的区别是什么?\n


JFrame

  • 添加到框架中的组件称为其内容,这些内容由**contentPane**管理。要将组件添加到**JFrame**,我们必须使用其**contentPane**代替。
  • **JFrame**包含一个带有**标题**、**边框**、(可选)**菜单栏**和**用户指定组件**的窗口。
  • **JFrame**可以**移动**、**调整大小**、**最小化**,并且它不是**JComponent**的子类。
  • 默认情况下,JFrame 显示在屏幕的**左上角**。要将框架显示在指定位置,我们可以在 JFrame 类中使用**setLocation(x, y)**方法。

示例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameDemo {
   public static void main(String s[]) {
      JFrame frame = new JFrame("JFrame Demo");
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
         }
      });
      JLabel lbl = new JLabel("JFrame Demo");
      lbl.setPreferredSize(new Dimension(175, 100));
      frame.getContentPane().add(lbl, BorderLayout.CENTER);
      frame.setSize(375, 275);
      frame.setVisible(true);
   }
}

输出

JDialog

  • **JDialog**与**JFrame**非常相似,除了 JDialog 可以设置为**模态**。**模态**意味着在显示相应的 JDialog 时,无法使用或激活任何其他窗口。
  • **模态对话框**阻止对其他顶级窗口的输入,而**非模态对话框**允许对其他窗口进行输入。
  • 与**JFrame**不同,JDialog 在窗口右上角不包含最小化和最大化按钮。

示例

import javax.swing.JDialog;
import javax.swing.JLabel;
public class JDialogDemo extends JDialog {
   public static void main(String[] args) {
      try {
         JDialogDemo dialog = new JDialogDemo();
         dialog.setVisible(true);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }  
   public JDialogDemo() {
      setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
      setTitle("Welcome to Tutorials Point");
      setBounds(100, 100, 359, 174);
      getContentPane().setLayout(null);
      JLabel label = new JLabel("Welcome to Tutorials Point");
      label.setBounds(86, 37, 175, 29);
      getContentPane().add(label);
   }
}

输出

更新于: 2020年2月7日

2K+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告