Java基础篇——Gui编程
AWT
抽象窗口工具
组件:按钮(button) 文本域(textarea)
标签(label) 容器(container)...
-
Frame窗口
Frame frame = new Frame(); //设置窗口可见性 frame.setVisible(true); //设置窗口大小,并固定不变(不可拉伸) frame.setSize(width,height); frame.setResizable(false); //窗口颜色 frame.setBackground(new Color(219, 232, 84)); //窗口弹出位置 frame.setLocation(x,y); //frame.setBounds(x,y,width,height)一次性设置位置和大小 -
Panel面板
面板不能单独存在
-
Panel panel = new Panel(); frame.setLayout(null);//开启窗口布局 ...//panel布局方法和frame窗口类似 frame.add(panel);
布局模式
-
流式布局
//在布局方法调用时,显式声明为流式布局 frame.setLayout(new FlowLayout()); //FlowLayout参数中可以声明为左/右对齐或者居中 //比如,左对齐:frame.setLayout(new FlowLayout(FlowLayout.LEFT)); -
东西南北中布局
frame.add(Component i,BorderLayout.SOUTH);//第一个参数是一个Component对象,右边是BorderLayout的属性,可以选择将对象放到(东西南北中)对应的位置 -
表格布局
frame.setLayout(new GridLayout(2,1));//将frame窗口分割为两行一列的表格 //参数内容 行数、列数、(行间距、列间距)
事件监听
-
frame窗口的监听
frame.addWindowListener(new WindowAdapter(){ ...//设置监听事件,例如 public void windowClosing(WindowEvent e) {//窗口关闭监听 System.exit(0); } //窗口关闭时关闭程序 //也可以重写其他窗口监听方法,比如窗口激活.. }); -
组件的监听
//以按钮Button的监听为例 button.addActionListener(new ActionListener(){ ...//监听事件 }); -
监听的类也可以通过接口实现类实现
画笔方法
Frame类里的paint方法传输了一个画笔型的参数,该类型提供了很多画图方法,可以直接使用,举个例子:
-
public void paint(Graphics e){//画笔型的参数 e.setColor(Color.BLUE);//设置画笔颜色 e.drawOval(100,100,200,200);//画一个圆形 e.setColor(Color.RED); e.drawRect(100,100,200,200);//画一个矩形 }
鼠标监听
-
frame.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) {//重写鼠标点击触发事件 ... } });
键盘监听
-
frame.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode();//getKeyCode方法捕获键盘码 ...//键盘码为KeyEvent内部属性 //比如KeyEvent.VK_UP是上键 } });
Swing
-
JFrame窗口
JFrame jFrame = new JFrame("My JFrame"); //JFrame提供了更便捷的窗口关闭方法 JFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //JFrame的方法大多与Frame相同,但设置背景颜色这里,JFrame引入了容器的概念,将窗口视作一个容器,只能修改容器的颜色来达到修改背景颜色的目的 Container container = jFrame.getContentPane(); container.setBackground(Color.YELLOW); -
JDialog弹窗
//弹窗的初始化方法和窗口类似,可用触发事件触发弹窗,弹窗默认可关闭 setTitle(String s);//设置弹窗名字 setVisible(true);//设置弹窗可见 setBounds(300,300,200,200);//设置位置和大小 add(new JLabel("你点击了按钮",SwingConstants.CENTER));//添加标签 -
动态追踪文本域的内容
利用获取的Document对象,来添加一个DocumentListener监听器。因为该监听器就可以实现动态的跟踪文本框的输入内容。实现DocumentListener接口,必须重写该接口中的三个方法
public class test implements DocumentListener { private JTextField textField; public void init() { textField = new JTextField(); //获取与编辑器关联的模型 Document doc = textField.getDocument(); //添加DocumentListener监听器 doc.addDocumentListener(this); } //该方法可以跟踪文本框中输入的内容 public void insertUpdate(DocumentEvent e) { Document doc = e.getDocument(); String s = doc.getText(0, doc.getLength());//返回文本框输入的内容 } //该方法可以跟踪文本框中移除的内容,例如:在文本框中点击Backspace public void removeUpdate(DocumentEvent e) { Document doc = e.getDocument(); String s = doc.getText(0, doc.getLength());//返回文本框输入的内容 } //该方法可以跟踪当文本框中已存在的内容改变时,获取相应的值 public void changedUpdate(DocumentEvent e) { Document doc = e.getDocument(); String s = doc.getText(0, doc.getLength());//返回文本框输入的内容 } } -
Icon图标
图标绘制:
class MyIcon extends JFrame implements Icon{ private int width; private int height; public void init(){//初始化方法 MyIcon myIcon = new MyIcon(15, 15); //创建标签的同时加入Icon图标 JLabel jLabel = new JLabel("标签",myIcon,SwingConstants.CENTER); ...//设置窗口属性 Container container = this.getContentPane(); container.add(jLabel);//向容器中加入带有图标的标签 } ...//构造方法 @Override public void paintIcon(Component c, Graphics g, int x, int y) { g.fillOval(x,y,width,height); }//绘制图标 @Override public int getIconWidth() { return width; } @Override public int getIconHeight() { return height; } }图片加载(加载目标图片作为图标)
public class SecondIconTest extends JFrame{ public SecondIconTest() { JLabel jLabel = new JLabel("图片Icon"); //获得该类当前路径下名为img.png文件的路径 URL url = SecondIconTest.class.getResource("img.png"); jLabel.setIcon(new ImageIcon(url));//向标签中加入图片Icon jLabel.setToolTipText("这是个图标");//设置鼠标悬停显示 ...//添加标签 ...//设置窗口属性 } } -
单选框、多选框
//单选按钮 JRadioButton button1 = new JRadioButton("Button1"); JRadioButton button2 = new JRadioButton("Button2"); //将按钮分到一组,不然可以多选 ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(button1); buttonGroup.add(button2); ...//向容器加入按钮 //复选框 JCheckBox button1 = new JCheckBox("Button1"); JCheckBox button2 = new JCheckBox("Button2"); ...//向容器加入复选框 -
下拉框,列表框
//下拉框 JComboBox jComboBox = new JComboBox(); //可以用jComboBox.addItem()方法加入选项 //列表框 JList list = new JList();//直接向构造器里丢入集合对象即可

浙公网安备 33010602011771号