GUI
关于GUI的使用
布局管理器
-
流式布局
new FlowLayout();
/* LEFT
RIGHT
CENTER
LEADING
TRAILING*/ -
东西南北中
new BorderLayout();
/CENTER
West
East
South
North/ -
表格布局
new GridLayout(1,0,0,0);
//public GridLayout(int rows, int cols);
AWT
-
创建窗口
public class Demo {
public static void main(String[] args) {
Frame frame = new Frame();//创建面板
frame.setBounds(10,20,300,500);
//设置面板出现的坐标(setLocation)
// 面板的大小(setSize)
frame.setBackground(Color.BLACK);
//设置背景颜色,Color类用于封装颜色
frame.setVisible(true);
//设置面板可见性
frame.setResizable(false);
//面板大小可变性
frame.setLayout(null);
//设置布局frame.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { System.exit(0); } });//关闭面板,构造了WindowAdapter的匿名内部类 } } -
创建面板
Panel p = new Panel(new GridLayout(3,2));
//创建面板
p.setSize(100,200);
p.setBackground(Color.CYAN);
frame.add(p);//将面板加入弹窗中
//加面板时可以设置布局 -
//实现按钮 Button b = new Button("shit");//按钮 b.setSize(50,200); b.addActionListener(new MyMonitor()); //添加动作监听 p.add(b);//添加按钮 //实现接口 class MyMonitor implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.out.println("嘿嘿嘿"); }}
//4. 实现文本框
```java TextField t = new TextField(); t.setEchoChar('*'); //密码的做法 t.setSize(40,40); p.add(t); t.addKeyListener(new Demo()); @Override public void keyPressed(KeyEvent e) { TextField t = (TextField)e.getSource(); //这里获得输入 String s = t.getText(); System.out.println(s); //清空输入栏 t.setText(""); } //ps这里我用主类实现了接口,所以没写另一个类 -
画笔
@Override
public void paint(Graphics g) {
g.setColor(Color.black);//设置颜色
g.drawRect(50,50,60,60);//draw画空心
g.fillOval(80,80,200,30);//fill实心
g.setColor(Color.BLACK);
}
6.用鼠标画图
private ArrayList points;
//创建数组存储点的坐标
//中间省略了对points的初始化@Override public void paint(Graphics g) { g.setColor(Color.red); Iterator it = points.iterator(); //使用迭代器获得数组中数据 while(it.hasNext()) { Point p =(Point)it.next(); //再将数据转换成Point类,获得坐标 g.fillOval(p.x,p.y,50,50); } } public void addPoints(Point p){ points.add(p); } class MyMouseListener extends MouseAdapter{ //添加了鼠标监听,使用了适配器 @Override public void mousePressed(MouseEvent e) { MyFrame mf =(MyFrame)e.getSource(); //获得资源 mf.addPoints(new Point(e.getX(),e.getY())); //拿到坐标 mf.repaint(); //使点能够连续 } }
Swing
tips
- Swing和AWT在一些地方大致相同,类名加了 ‘J’
-
//java关闭窗口 jFrame.setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE);
小结
-
Swing所有东西在Container中
class MyJFrame extends JFrame{
public void init(){
setBounds(10,20,500,600);
setVisible(true);Container container =this.getContentPane(); //创建容器,获得当前容器,相当于拿到了内容(大雾) container.setBackground(Color.DARK_GRAY); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } } -
弹窗
//jb是一个按钮,添加一个动作监听,弹出窗口
//用了匿名内部类
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new MyJDialog();
}
});container.add(jb); //编写弹窗 class MyJDialog extends JDialog{ public MyJDialog(){ this.setBounds(10,20,500,600); this.setVisible(true); Container container =this.getContentPane(); container.setBackground(Color.green); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } } -
图标
图标可以add在按钮上,也可以在标签上
//要实现Icon接口
class MyJFrame implements Icon{
MyJFrame m = new MyJFrame(150,150);JLabel l = new JLabel(m); //把图标加到标签中 l.setSize(500,500); //最好设置一个大小,不然看不见 container.add(l); public MyJFrame(int width,int height){ this.width = width; this.height = height; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(Color.red); g.fillOval(x,y,width,height); g.setColor(Color.BLACK); } //实习的一个Icon方法 } -
文本域
Container c =this.getContentPane();
//获取容器
JTextArea jt = new JTextArea(10,10);
//建立文本域
jt.setText("here is");
JScrollPane js = new JScrollPane(jt);
//滚动条
c.add(js); -
按钮
//有图片的按钮
jr = new JRadioButton();
URL url = Demo02.class.getResource("tx.png");
//获取图片资源
Icon icon = new ImageIcon(url);
jb = new JButton();
jb.setIcon(icon);
//加入按钮
jb.setToolTipText("push it");
//按钮提示
jb.setSize(500,500);//单选按钮 JRadioButton jrb = new JRadioButton("girl"); JRadioButton jrb2 = new JRadioButton("boy"); jrb.setSize(100,100); jrb2.setSize(100,100); ButtonGroup bg = new ButtonGroup(); //将按钮添加到组中完成单选 bg.add(jrb); bg.add(jrb2); container.add(jrb,BorderLayout.NORTH); container.add(jrb2,BorderLayout.SOUTH); //多选按钮且不需要装进组里 JCheckBox jcb = new JCheckBox("boy"); JCheckBox jcb2 = new JCheckBox("girl"); -
下拉框 列表框
//下拉框
JComboBox s = new JComboBox();
//添加词条
s.addItem(null);
s.addItem("body");
s.addItem("eyes");container.add(s); //列表框 //String[] s = {"1","2","3"};静态 Vector s = new Vector();//动态 JList l = new JList(s); s.add("1"); container.add(l);
浙公网安备 33010602011771号