关于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
//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);
原文:https://www.cnblogs.com/canmeng196/p/14534669.html