用户交互:
JOptionPane
消息对话框
showMessageDialog
确认对话框
showConfirmDialog 返回整型
输入对话框
showInputDialog //用户输入 返回字符串 可用Interger.parseInterger等转化为其他类型
例程:
import javax.swing.JOptionPane;
public class JavaApp {
public static void main(String[] args) {
//弹出消息对话框
JOptionPane.showMessageDialog(null, "hello world !");
//弹出确认对话框
int option=JOptionPane.showConfirmDialog(null, "1+1=2?");
if(option==JOptionPane.YES_OPTION)
System.out.println("你选择的是Yes");
else
System.out.println("你选择的是No");
String name=JOptionPane.showInputDialog("请输入你的名字:");
int age =Integer.parseInt(JOptionPane.showInputDialog("请输入你的年龄:"));
JOptionPane.showMessageDialog(null, "你好,"+name+"\n你今年"+age+"岁了");
}
}
构建界面程序: JFrame
步骤:
创建窗口对象 new JFrame
设置布局 setLayout
添加组件 add
设置事件监听 addActionListener 内部类 implements ActionListener重写actionPerformed方法
辅助窗体设置:
设置位置 setLoction //不设默认(0,0)
设置大小 setSize //设置宽和高
设置可见性 setVisable //必须为true才可见
设置是否固定窗口 setResizable
设置默认关闭操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
布局管理器:默认为BorderLayout
BorderLayout 边框式布局 将整个容器划分成东南西北中五个方位来放置控件
FlowLayout 流动式布局 按照顺序一个接一个由左向右的水平放置在容器中
GridLayout 网格式布局 将整个容器划分成一定的行和一定的列
BoxLayout 箱式式布局 可以指定在容器中是否对控件进行水平或者垂直放置
GridBagLayout 网格包布局 一种更强大更灵活的布局方式
构建相应代码:
窗口程序:
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JFrameLayout {
public static void main(String[] args) {
JFrame jFrame=new JFrame("Hello World");
jFrame.setLocation(100, 100);
jFrame.setSize(200, 200); //后面的相应改了大小
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setVisible(true);
}
}
1、BorderLayout
窗口程序里加入代码:
jFrame.setLayout(new BorderLayout());
jFrame.add(new JButton("东"),BorderLayout.EAST);
jFrame.add(new JButton("西"),BorderLayout.WEST);
jFrame.add(new JButton("南"),BorderLayout.SOUTH);
jFrame.add(new JButton("北"),BorderLayout.NORTH);
jFrame.add(new JButton("中"),BorderLayout.CENTER);
效果如下:
2、 FloatLayout
窗口程序里加入代码:
jFrame.setLayout(new FlowLayout());
jFrame.add(new JButton("one"));
jFrame.add(new JButton("two"));
jFrame.add(new JButton("three"));
jFrame.add(new JButton("four"));
jFrame.add(new JButton("five"));
效果如下:
3、GridLayout
窗口程序里加入代码:
jFrame.setLayout(new java.awt.GridLayout(4, 5));
for(int i=0;i<4;i++)
for(int j=1;j<=5;j++)
jFrame.add(new JButton("button"+(5*i+j)));
效果如下:
4、BoxLayout 和FlowLayout相似,但比FlowLayout更灵活
JPanel jPanel=new JPanel();
jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS));
jPanel.add(Box.createVerticalStrut(50));
jPanel.add(new JButton("one"));
jPanel.add(new JButton("two"));
jPanel.add(new JButton("three"));
jPanel.add(new JButton("four"));
jPanel.add(new JButton("five"));
jFrame.add(jPanel);
BoxLayout 往往和 Box 这个容器结合在一起使用,这么做的理由是,BoxLayout 是把控件以水平或者垂直的方向一个接一个的放置,如果要调整这些控件之间的空间,就会需要使用 Box 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。Box 容器提供了 4 种透明的组件,分别是 rigid area、strut、glue、filler。Box 容器分别提供了不同的方法来创建这些组件。这四个组件的特点如下:
•Rigid area 是一种用户可以定义水平和垂直尺寸的透明组件;
•strut 与 rigid area 类似,但是用户只能定义一个方向的尺寸,即水平方向或者垂直方 向,不能同时定义水平和垂直尺寸;
•当用户将 glue 放在两个控件之间时,它会尽可能的占据两个控件之间的多余空间,从而将两 个控件挤到两边;
•Filler 是 Box 的内部类,它与 rigid area 相似,都可以指定水平或者垂直的尺寸,但是 它可以设置最小,最大和优先尺寸。
5、GridBagLayout 页面布局的一个难点(后面会转载一篇有详细说明的博客)
一般程序不会采用一个布局,而是多个布局的整合,通过JPanel等连接起来
常用图形组件:
JPanel JButton JTextArea JPasswordField
JLable JCheckBox JRadioButton JTextField
JSlider JComboBox JProgressBar JScrollPane
JTable 等