GUI编程(二)----- 容器组件
JFrame 框架窗体
JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以讲JFrame看作是承载这些Swing组件的容器。JFrame窗体具有最大化、最小化和关闭按钮。
常用方法
1、构造方法
JFrame()
构造一个初始时不可见的新窗体。
JFrame(String title)
创建一个新的、初始不可见的、具有指定标题的 Frame
。
注意:构造方法创建出来的窗体式默认隐藏的。
2、普通方法
Container getContentPane()
返回此窗体的 contentPane
对象。Component类的。
public void setVisible(boolean b) 设置窗体的隐藏和显示。window类的。
public void setSize(int width, int height) 调整组件的大小,使其宽度为 width
,高度为 height
。
void setBounds(int x, int y, int width, int height) 移动组件并调整其大小。
void setIconImage(Image image)
设置要作为此窗口图标显示的图像。
Component
add(Component comp)
将指定组件追加到此容器的尾部。
void setDefaultCloseOperation(int operation)
设置用户在此窗体上发起 "close" 时默认执行的操作。
operation的值:
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为 "defaultCloseOperation"。
代码示例:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("测试窗体"); //创建带有标题的窗体 3 frame.setSize(300, 300); //设置大小 4 frame.setLocationRelativeTo(null); //居中显示 5 frame.setIconImage(Toolkit.getDefaultToolkit().createImage("E:\\Workspace\\Demo\\src\\IMG_1880.PNG")); 6 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击x好的时候退出虚拟机 7 JButton button = new JButton("我是一个button"); 8 frame.add(button); //添加组件 9 // Container container = frame.getContentPane(); 10 // container.add(button); 11 frame.setVisible(true); //设置显示 12 }
JDialog对话框
代码示例如下:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("测试窗体"); //创建带有标题的窗体 3 frame.setSize(300, 300); //设置大小 4 frame.setLocationRelativeTo(null); //居中显示 5 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 6 7 JDialog dialog = new JDialog(frame,"对话框"); 8 dialog.setBounds(300, 300, 100, 100); 9 dialog.setLocationRelativeTo(frame); 10 dialog.setVisible(true); 11 dialog.add(new JLabel("我是一个对话框")); 12 frame.setVisible(true); 13 }
JDialog使用起来不方便,不能明确的起到作用。所以用JOptionPane来代替。
JOptionPane使用方法代码如下:
1 public class DemoDialog { 2 public static void main(String[] args) { 3 JFrame frame = new JFrame("测试窗体"); //创建带有标题的窗体 4 frame.setSize(300, 300); //设置大小 5 frame.setLocationRelativeTo(null); //居中显示 6 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 7 8 9 //消息对话框 10 JOptionPane.showMessageDialog(frame, "通知内容", "通知",JOptionPane.INFORMATION_MESSAGE); 11 //警告对话框 12 JOptionPane.showMessageDialog(frame,"警告内容","警告",JOptionPane.WARNING_MESSAGE); 13 //错误对话框 14 JOptionPane.showMessageDialog(frame,"错误内容","错误",JOptionPane.ERROR_MESSAGE); 15 16 //输入框 17 String moeny = JOptionPane.showInputDialog("请输入你要给我的金额($)"); 18 System.out.println("money:"+ moeny); 19 20 //确认框 21 int num = JOptionPane.showConfirmDialog(frame, "你确认要卸载吗?"); 22 System.out.println(num); 23 }
FileDialog文件对话框
代码示例:
1 public class Demo3 { 2 3 public static void main(String[] args) { 4 JFrame frame = new JFrame("窗体"); 5 //创建一个文件对话框(初始也是不可见) 6 //FileDialog fileDialog = new FileDialog(frame, "请选择打开的文件", FileDialog.LOAD); 7 FileDialog fileDialog = new FileDialog(frame,"请选择保存的路径",FileDialog.SAVE); 8 FrameUtil.initFrame(frame, 300,400); 9 fileDialog.setVisible(true); 10 System.out.println("文件所在的目录:"+ fileDialog.getDirectory()); 11 System.out.println("文件名:"+ fileDialog.getFile()); 12 } 13 }
JPanel 面板
代码示例:
1 public class Demo4 { 2 3 public static void main(String[] args) { 4 JFrame frame = new JFrame("窗体"); 5 //创建一个面板 6 JPanel panel = new JPanel(); 7 //设置面板的背景颜色 8 panel.setBackground(Color.RED); 9 //把面板添加到窗体 10 frame.add(panel); 11 FrameUtil.initFrame(frame, 400, 300); 12 } 13 }
JScorollPane面板
JScorllPane面板是带滚动条的面板,它也是一种容器。但是JScorllPane只能放置一个组件,并且不可以使用布局管理器。如果需要在JScorllPane面板中放置多个组件,需要将多个组件放置在Jpanel面板上,然后将Jpanel面板作为一个整体组件添加在JScorllPane面板上。
代码示例如下:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("测试窗体"); //创建带有标题的窗体 3 frame.setSize(300, 100); //设置大小 4 frame.setLocationRelativeTo(null); //居中显示 5 frame.setIconImage(Toolkit.getDefaultToolkit().createImage("E:\\Workspace\\Demo\\src\\IMG_1880.PNG")); 6 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击x好的时候退出虚拟机 7 JLabel label = new JLabel("这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label这是一个滚动Label"); 8 JScrollPane scrollPane = new JScrollPane(label); 9 frame.add(scrollPane); 10 frame.setVisible(true); //设置显示 11 }