Java可视化AWT

简介:

AWT

总体上Swing组件替代了绝大部分AWT组件,对AWT图形用户界面编程有极好的补充和加强。

package ch11;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/1.
 */
public class FrameTest {
    public static void main(String[] args) {
        Frame f = new Frame("测试窗口");
        // 设置窗口的大小、位置
        f.setBounds(30,30,250,200);
        // 将窗口显示出来
        f.setVisible(true);
    }
}

AWT容器

图形界面编程,类似于小朋友玩的拼图游戏,容器类似于拼图的母板,普通组件类似于拼图图块。

package ch11;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/1.
 */
public class PanelTest {
    public static void main(String[] args) {
        Frame f = new Frame("测试页面");
        Panel p = new Panel();
        p.add(new TextField(20));
        p.add(new Button("Click Me"));
        f.add(p);
        f.setBounds(30,30,250,120);
        f.setVisible(true);
    }
}

FlowLayout布局管理器

  • 组件像水流一样向某方向流动,遇到障碍就折回,重头开始排列。
package ch11;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/1.
 */
public class FlowLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("测试窗口");
        // 设置Frame使用FlowLayout布局管理器
        f.setLayout(new FlowLayout(FlowLayout.LEFT,20,5));
        // 向窗口添加10个按钮
        for (int i = 0;i<10;i++) {
            f.add(new Button("Button"+i));
        }
        // 设置窗口为最佳大小
        f.pack();
        f.setVisible(true);
    }
}

BorderLayout布局管理器

  • BorderLayout将容器分为EAST、SOUTH、WEST、NORTH、CENTER五个区域。普通组件可以放在这五个区域中的任意一个。
  • 默认添加到中间区域。
package ch11;

import java.awt.*;
import static java.awt.BorderLayout.*;

/**
 * Created by Jiqing on 2016/12/1.
 */
public class BorderLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("测试窗口");
        // 设置Frame容器使用BorderLayout布局管理器
        f.setLayout(new BorderLayout(50,50));
        f.add(new Button("S"),SOUTH);
        f.add(new Button("N"),NORTH);
        // 默认添加到中间区域
        f.add(new Button("M"));
        f.add(new Button("E"),EAST);
        f.add(new Button("W"),WEST);

        f.pack();
        f.setVisible(true);

    }
}

GirdLayout布局管理器

GirdLayout布局管理器将容器分割成纵横分割的网格,每个网格所占据的领域大小相同。

package ch11;
import java.awt.*;
import static java.awt.BorderLayout.*; // 默认布局

/**
 * Created by Jiqing on 2016/12/1.
 */
public class GridLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("计算器");
        Panel p1 = new Panel();
        p1.add(new TextField(30));
        f.add(p1,NORTH); // import static java.awt.BorderLayout.*;
        Panel p2 = new Panel();
        p2.setLayout(new GridLayout(3,5,4,4));
        String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};
        for (int i = 0;i<name.length;i++) {
            p2.add(new Button(name[i]));
        }
        f.add(p2);
        f.pack();
        f.setVisible(true);
    }
}

GridBagLayout

  • 与GridLayout不同,它可以跨越一个或多个网络,并可以设置网络的大小互不相同。

  • 增加布局的灵活性

  • 使用步骤

  1. 创建GridBagLayout布局管理器
  2. 创建GridBagConstraints对象
  3. 建立关联
  4. 添加组件
package ch11;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class GridBagTest {
    private Frame f = new Frame("测试窗口");
    private GridBagLayout gb = new GridBagLayout();
    private GridBagConstraints gbc = new GridBagConstraints();
    private Button[] bs = new Button[10];

    public void init() {
        f.setLayout(gb);
        for (int i = 0;i<bs.length;i++) {
            bs[i] = new Button("Button"+i);
        }

        // 所有组件都可以横向、纵向扩大
        gbc.fill = GridBagConstraints.BOTH;
        gbc.weightx = 1;
        addButton(bs[0]);
        addButton(bs[1]);
        addButton(bs[2]);
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        addButton(bs[3]);
        gbc.weightx = 0;
        addButton(bs[4]);
        gbc.gridwidth = 2;
        addButton(bs[5]);
        gbc.gridwidth = 1;
        gbc.gridheight = 2;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        addButton(bs[6]);
        gbc.gridwidth = 1;
        gbc.gridheight =2;
        gbc.weighty = 1;
        addButton(bs[7]);
        gbc.weighty = 0;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.gridheight = 1;
        addButton(bs[8]);
        addButton(bs[9]);
        f.pack();
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new GridBagTest().init();
    }

    private void addButton(Button button) {
        gb.setConstraints(button,gbc);
        f.add(button);
    }

}

BoxLayout

  • BoxLayout 可以在垂直和水平两个方向摆放控件
package ch11;
import javax.swing.*;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class BoxLayoutTest {
    private Frame f = new Frame("测试");
    public void init() {
        f.setLayout(new BoxLayout(f,BoxLayout.Y_AXIS));
        // 下面按钮将垂直排列
        f.add(new Button("First Button"));
        f.add(new Button("Second Button"));
        f.pack();
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new BoxLayoutTest().init();
    }
}
package ch11;

import javax.swing.*;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class BoxTest {
    private Frame f = new Frame("测试");
    // 定义水平组件Box对象
    private Box horizontal = Box.createHorizontalBox();
    // 定义垂直组件Box对象
    private Box verical = Box.createVerticalBox();
    public void init() {
        horizontal.add(new Button("H btn1"));
        horizontal.add(new Button("H btn2"));
        verical.add(new Button("V btn1"));
        verical.add(new Button("V btn2"));
        f.add(horizontal,BorderLayout.NORTH);
        f.add(verical);
        f.pack();
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new BoxTest().init();
    }
}

常用的

package ch11;

import javax.swing.*;
import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class CommonComponent {
    Frame f = new Frame("测试");
    Button ok = new Button("Confirm");
    CheckboxGroup cbg = new CheckboxGroup();
    Checkbox male = new Checkbox("Male",cbg,true);
    Checkbox female = new Checkbox("Female",cbg,false);

    Choice colorChooser = new Choice();
    List colorList = new List(6,true);
    TextArea ta = new TextArea(5,20);
    TextField name = new TextField(50);
    public void init() {
        colorChooser.add("red");
        colorChooser.add("green");
        colorChooser.add("blue");
        colorList.add("red");
        colorList.add("green");
        colorList.add("blue");
        Panel bottom = new Panel();
        bottom.add(name);
        bottom.add(ok);
        f.add(bottom,BorderLayout.SOUTH);
        Panel checkPanel = new Panel();
        checkPanel.add(colorChooser);
        checkPanel.add(male);
        checkPanel.add(female);
        Box topLeft = Box.createVerticalBox();
        topLeft.add(ta);
        topLeft.add(checkPanel);

        Box top = Box.createHorizontalBox();
        top.add(topLeft);
        top.add(colorList);
        f.add(top);
        f.pack();
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new CommonComponent().init();
    }
}

422101-20161202234607724-1811554431.png

Dialog对话框

  • 对话框
package ch11;

import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class DialogTest {
    Frame f = new Frame("测试");
    Dialog d1 = new Dialog(f,"Modal Dialog",true);
    Dialog d2 = new Dialog(f,"Not Modal Dialog",false);
    Button b1 = new Button("Open MD");
    Button b2 = new Button("Open NMD");
    public void init() {
        d1.setBounds(20,30,300,400);
        d2.setBounds(20,30,300,400);
        b1.addActionListener(e->d1.setVisible(true));
        b2.addActionListener(e->d2.setVisible(true));
        f.add(b1);
        f.add(b2,BorderLayout.SOUTH);
        f.pack();
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new DialogTest().init();
    }
}
package ch11;

import java.awt.*;

/**
 * Created by Jiqing on 2016/12/2.
 */
public class FileDialogTest {
    Frame f = new Frame("测试");
    FileDialog d1 = new FileDialog(f,"load file",FileDialog.LOAD);
    FileDialog d2 = new FileDialog(f,"save file",FileDialog.SAVE);
    Button b1 = new Button("open");
    Button b2 = new Button("save");
    public void init() {
        b1.addActionListener(e->{
            d1.setVisible(true);
            System.out.println(d1.getDirectory()+d1.getFile());
        });

        b2.addActionListener(e->{
            d2.setVisible(true);
            System.out.println(d2.getDirectory()+d2.getFile());
        });

        f.add(b1);
        f.add(b2,BorderLayout.SOUTH);
        f.pack();
        f.setVisible(true);

    }

    public static void main(String[] args) {
        new FileDialogTest().init();
    }
}

422101-20161202234459115-402593724.png


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6127749.html,如需转载请自行联系原作者

相关文章
|
1月前
|
设计模式 自然语言处理 前端开发
JAVA图形用户界面
JAVA图形用户界面
|
1月前
|
前端开发 Java 开发工具
盘点Java GUI框架
盘点Java GUI框架
39 0
|
Java 图形学 容器
java绘图技术基础
绘图原理: Component类提供了两个和绘图相关最重要的方法: paint(Graphics g)控制组件的外观 repaint()刷新组件的外观 那么通过上面的代码可以发现,我们并没有显示的调用paint方法,然而它似乎自己调用了,这是为什么呢?✨ 在以下情况下paint将会被调用:😁 组件第一次在屏幕显示的时候 窗口最大化和最小化 窗口大小发生变化 repaint方法被调用
134 0
java绘图技术基础
|
IDE Java 数据库连接
1小时学会通过Java Swing Design设计java图形化(1)
1小时学会通过Java Swing Design设计java图形化
106 0
1小时学会通过Java Swing Design设计java图形化(1)
|
Java 容器
1小时学会通过Java Swing Design设计java图形化(2)
1小时学会通过Java Swing Design设计java图形化
114 0
1小时学会通过Java Swing Design设计java图形化(2)
|
Java 关系型数据库 MySQL
1小时学会通过Java Swing Design设计java图形化(3)
1小时学会通过Java Swing Design设计java图形化
144 0
1小时学会通过Java Swing Design设计java图形化(3)
|
存储 Java 人机交互
Java GUI Swing组件
Java GUI Swing组件
185 0
Java GUI Swing组件
|
数据可视化 Java 容器
|
前端开发 Java 图形学
|
Java 程序员 数据安全/隐私保护