Swing常用控件

javax.swing包中的常用组件:

—容器组件

JFrame(框架)

JDialog(多窗体程序以及窗体间传递数据)

JPanel(面板)

JScrollPane(滚动面板)

—文本组件

JLabel、JTextField、JPasswordField、JTextArea

—表单组件

JButton

JCheckBox

JRadioButton和ButtonGroup

JComboBox


javax.swing.JDialog

1.JDialog用于在程序中创建对话框组件,对于多窗口的程序而言,对话框尤为重要

2.对话框其实就是轻量级的窗体,它比JFrame消耗更少的系统资源。

3.它与JFrame的区别在于,JFrame可以在程序中不依赖于其他窗体单独存在,而JDialog则必须依赖于其他窗体,一般是做辅助窗口呈现。

4.更重要的是,JDialog支持模式显示

5.所谓模式显示,是指窗口以不丢失焦点的独占方式显示。

JDialog常用的构造函数:

[java]  view plain  copy
  1. //创建一个没有标题并且没有指定所有者的无模式对话框  
  2. JDialog()  
  3. //创建一个没有标题但指定owner作为其所有者的无模式对话框  
  4. JDialog(Frame owner)  
  5. //创建一个没有标题但有指定所有者的对话框,根据参数modal来决定他是否模式显示  
  6. JDialog(Frame owner, boolean modal)  
  7. //创建一个具有指定标题和指定所有者的无模式对话框  
  8. JDialog(Frame owner, String title)  
  9. //创建一个指定标题和指定所有者的对话框,参数modal决定是否模式显示  
  10. JDialog(Frame owner, String title, boolean modal)  
  11. //创建一个没有标题但有指定所有者的对话框,根据参数modal来决定它是否模式显示  
  12. JDialog(Dialog owner, boolean modal)  

除了模式显示的功能外,JDialog的使用跟JFrame很相似,以下是一些常用的方法:

[java]  view plain  copy
  1. //设置对话框标题,标题内容由参数title指定  
  2. void setTitle(String title)  
  3. //设置对话框的大小,由参数width指定宽度,参数height指定高度  
  4. void setSize(int width, int height)  
  5. //设置对话框能否调整大小,由参数resizable决定  
  6. void setResizable(boolean resizable)  
  7. //设置对话框是否可见  
  8. void setVisible(boolean b)  
  9. //获得对话框的内容面板  
  10. Container getContentPane()  
  11. //释放当前对话框及其所有子组件所占用的资源,即卸载对话框  
  12. void dispose()  

下面通过一个案例来深入体会JDialog,先来看看效果图:

Swing常用控件_第1张图片

上图表示用户点击"显示子窗口"出现一个对话框,然后用户在对话框中输入名字,点击"确定"之后,对话框会关闭,名字就会显示在主窗口中。

程序源码:

[java]  view plain  copy
  1. /** 
  2.  * 测试JDialog 
  3.  * @author Liao 
  4.  * 
  5.  */  
  6. public class JDialogTest extends JFrame{  
  7.   
  8.       
  9.     private static final long serialVersionUID = 1L;  
  10.     //定义标签  
  11.     public JLabel jLabel;  
  12.     //定义显示子窗口的按钮  
  13.     private JButton showSubWindow;  
  14.       
  15.     //在构造函数中初始化组件  
  16.     public JDialogTest(){  
  17.         //创建标签  
  18.         jLabel = new JLabel("请输入您的名字");  
  19.         //创建按钮  
  20.         showSubWindow = new JButton("显示子窗口");  
  21.         //设置布局为BorderLayout,可以不设置,因为窗体默认是BorderLayout  
  22.         this.setLayout(new BorderLayout());  
  23.         //把组件添加到窗体中  
  24.         this.add(jLabel, BorderLayout.NORTH);  
  25.         this.add(showSubWindow, BorderLayout.SOUTH);  
  26.           
  27.         //设置按钮的监听事件  
  28.         showSubWindow.addActionListener(new ActionListener() {  
  29.               
  30.             @Override  
  31.             public void actionPerformed(ActionEvent e) {  
  32.                   
  33.                 //我们在另外一个类中显示子窗口,只要把主类中的上下文参数传过去即可  
  34.                 new SubWindow(JDialogTest.this);  
  35.                   
  36.             }  
  37.         });  
  38.           
  39.           
  40.         //设置窗体的基本属性  
  41.         this.setSize(500500);  
  42.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  43.         this.setLocationRelativeTo(null);  
  44.         this.setVisible(true);  
  45.           
  46.     }  
  47.   
  48.   
  49.     public static void main(String[] args) {  
  50.           
  51.         new JDialogTest();  
  52.     }  
  53. }  

子窗口程序:

[java]  view plain  copy
  1. public class SubWindow extends JDialog{  
  2.       
  3.       
  4.     private static final long serialVersionUID = 1L;  
  5.     //定义文本输入框  
  6.     private JTextField jTextField;  
  7.     //定义确定按钮  
  8.     private JButton jbt;  
  9.       
  10.     //无参构造函数  
  11.     public SubWindow() {  
  12.           
  13.     }  
  14.   
  15.     //在构造函数中初始化组件  
  16.     public SubWindow(final JDialogTest context) {  
  17.         //创建文本输入框  
  18.         jTextField = new JTextField();  
  19.         //创建按钮  
  20.         jbt = new JButton("确定");  
  21.           
  22.         //设置布局管理器,可以不写,因为JDialog和窗体差不多,默认都是BorderLayout  
  23.         this.setLayout(new BorderLayout());  
  24.         //把组件添加到JDialog中  
  25.         this.add(jTextField, BorderLayout.NORTH);  
  26.         this.add(jbt, BorderLayout.SOUTH);  
  27.           
  28.         //设置按钮的监听事件  
  29.         jbt.addActionListener(new ActionListener() {  
  30.               
  31.             @Override  
  32.             public void actionPerformed(ActionEvent e) {  
  33.                 //获取用户输入  
  34.                 String name = jTextField.getText();  
  35.                 //把名字写到主窗体的标签中  
  36.                 context.jLabel.setText("您的名字是:" + name);  
  37.                 //关闭子窗口  
  38.                 SubWindow.this.setVisible(false);  
  39.                 //setVisible(false);  
  40.                   
  41.             }  
  42.         });  
  43.           
  44.         //设置JDialog的基本属性  
  45.         this.setSize(300200);  
  46.         this.setTitle("输入");  
  47.         this.setResizable(false);  
  48.         this.setVisible(true);  
  49.     }  
  50.   
  51.   

你可能感兴趣的:(java)