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); } }
输出
广告