GUI编程相关知识二

这里重写了Frame类中的paint方法,它的参数是一个Graphics类的对象,这个对象相当于画笔。问题是这个主方法中没有调用这个方法它就自动调用,是因为重写了的方法会自动调用吗


public class Demo15 {
    public static void main(String[] args) {
        new Paint().loadFrame();
    }
}
class Paint extends Frame {

    public void loadFrame(){
        setVisible(true);
        setBounds(200,200,600,500);
    }

    //很迷惑这个方法怎么输出的,并没有调用
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.RED);
        g.drawOval(200,100,100,100);
        g.fillOval(100,100,100,100);
        g.setColor(Color.black);
        g.fillRect(150,200,200,200);
    }

}

这里重写了窗口监听的三个方法,关闭,正在关闭,隐藏窗口三个方法。

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Demo16 {
    public static void main(String[] args) {
        new Stick();
    }
}
class Stick extends Frame {
    public Stick()   {
        setVisible(true);
        setBounds(100,100,200,200);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                setVisible(false);            //让窗口隐藏起来,但是程序没有终止,只能点击idea中红色方形终止程序
                System.out.println("窗口正在被关闭");
                System.exit(0);       //窗口关闭,让程序终止
            }

            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("窗口被关闭");
                System.exit(0);
            }

            @Override
            public void windowActivated(WindowEvent e) {
                Stick stick=(Stick)e.getSource();   //getSouce方法返回值是一个Object类,它的作用是获取资源,
                                                     //将Object类转化为Stick
                stick.setTitle("我爱你");             //有关激活的方法
                System.out.println("windowActivated");
            }
        });



}

这里运用了键盘监听事件

class Play extends Frame{

    public Play(){
        setVisible(true);
        pack();
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
            int a=e.getKeyCode();
                System.out.println(a);
                if(a==KeyEvent.VK_UP){
                    System.out.println("你输入了上键");
                }
            }
        });
    }
}

用到了JFrame

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

public class Demo18 {
    public static void main(String[] args) {
        new JframeDemo();
    }
}
class JframeDemo{
    public JframeDemo(){
        JFrame jf=new JFrame();
        jf.setVisible(true);
        jf.pack();
        JLabel jlabel=new JLabel("我来了");
        jlabel.setHorizontalAlignment(SwingConstants.CENTER);
        jf.add(jlabel);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container con= jf.getContentPane();
        con.setBackground(Color.GREEN);
    }
}

按钮上设置了事件监听,完成了弹窗设计

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo19 {
    public static void main(String[] args) {
        new Gon();
    }
}
class Gon extends JFrame {

public Gon(){
    setVisible(true);
    setBounds(100,100,200,200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    Container container =getContentPane();             //JFrame需要用这个方法返回一个容器对象,通过容器对象完成相应操作
    container.setLayout(null);                 //绝对布局
    Button button=new Button("jbutton1");
    button.setBounds(30,30,200,50);         //因为设置了绝对布局,所以要设置按钮大小
    container.add(button);
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new Dia();
        }
    });

}
}
class Dia extends JDialog{
public Dia(){
    setVisible(true);
    setBounds(100,100,500,500);
    //setDefaultCloseOperation(EXIT_ON_CLOSE);      //不用设置,默认可以关闭
    Container container=getContentPane();          //JLabel需要用这个方法返回一个容器对象,通过容器对象完成相应操作
    container.setLayout(null);//绝对布局
    JLabel jlabel= new JLabel("来来来");
    jlabel.setBounds(30,30,200,50);
    container.add(jlabel);
   /* Label label= new Label("来来来");
    label.setBounds(30,30,200,50);
    container.add(label);   */ //不知道为什么用Label标签显示的时候显示不出
}
}

用到了图像标签

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

public class Demo20 {
    public static void main(String[] args) {
        new Happ();
    }
}

class Happ extends JFrame implements Icon {


    public Happ() {
        Happ happ=new Happ(150,150);
        Container container=getContentPane();
        container.add( new JLabel("图标",happ,SwingConstants.CENTER));
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
    }

    private int width;
    private int height;


    public Happ(int width,int height)  {
        this.width=width;
        this.height=height;
}
    //很迷惑这些方法怎么执行的
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
      g.fillOval(x,y,width,height);
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public int getIconHeight() {
        return this.height;
    }

}
用到了图片标签
import javax.swing.*;
import java.awt.*;
import java.net.URL;

public interface Demo21 {
    public static void main(String[] args) {
         new Confused();
    }
}
class Confused extends JFrame{
    public Confused(){
        JLabel jlabel=new JLabel("图片");

        URL url=Confused.class.getResource("nice.jpg");     //用这个方法获得图片地址
        ImageIcon imageIcon=new ImageIcon(url);                  //图片标签

        jlabel.setIcon(imageIcon);
        jlabel.setHorizontalAlignment(SwingConstants.CENTER);

        Container container=getContentPane();
        container.add(jlabel);

        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
}

用到了带滚动条的面板以及文本域

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

public class Demo23 {
    public static void main(String[] args) {
new Fighti();
    }

}
class Fighti extends JFrame{
    public Fighti()  {
        setVisible(true);
        pack();
        JTextArea jtextArea=new JTextArea(20,50);
        jtextArea.setText("我爱学习");
        JScrollPane jscrollPane=new JScrollPane(jtextArea);
      Container container = getContentPane();
      container.add(jscrollPane);
    }
}

带图片按钮

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

public class Demo24 {
    public static void main(String[] args) {
        new Mucch();
    }
}
class Mucch extends JFrame {
    public Mucch() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //将图片变为图标
         Icon icon=new ImageIcon(Mucch.class.getResource("nice.jpg"));
         JButton jbutton=new JButton();
         jbutton.setIcon(icon);
        jbutton.setToolTipText("按钮踩踩踩");   //为什么我的鼠标悬浮在按钮上不显示我设置的字
         Container container=getContentPane();
         container.add(jbutton);

    }
}

单选框

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

public class Demo25 {
    public static void main(String[] args) {
        new Mucche();
    }
}
class Mucche extends JFrame {
    public Mucche() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JRadioButton jRadioButton1=new JRadioButton("addddddd");
JRadioButton jRadioButton2=new JRadioButton("adddddd");
JRadioButton jRadioButton3=new JRadioButton("dadadada");
//由于单选框中只能够选择一个,分组,一个组中只能选择一个
ButtonGroup buttonGroup=new ButtonGroup();
buttonGroup.add(jRadioButton1);
buttonGroup.add(jRadioButton2);
buttonGroup.add(jRadioButton3);
        Container container=getContentPane();
        container.add(jRadioButton1,BorderLayout.NORTH);
        container.add(jRadioButton2,BorderLayout.SOUTH);
        container.add(jRadioButton3,BorderLayout.CENTER);

    }
}

复选框

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

public class Demo26 {
    public static void main(String[] args) {
        new Mucchee();
    }
}
class Mucchee extends JFrame {
    public Mucchee() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JCheckBox jCheckBox1=new JCheckBox("addddddd");
        JCheckBox jCheckBox2=new JCheckBox("adddddd");
        JCheckBox jCheckBox3=new JCheckBox("dadadada");
        Container container=getContentPane();
        container.add(jCheckBox1,BorderLayout.NORTH);
        container.add(jCheckBox2,BorderLayout.SOUTH);
        container.add(jCheckBox3,BorderLayout.CENTER);

    }
}

列表框和下拉框

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

public class Demo27 {
    public static void main(String[] args) {
        new Muccheee();
    }
}
class Muccheee extends JFrame {
    public Muccheee() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container container=getContentPane();
        String[] ban={"11","22","33"};
        JList jList=new JList(ban);
        container.add(jList);


     /*  JComboBox jComboBox=new JComboBox();
       jComboBox.addItem(null);
       jComboBox.addItem("一部");
       jComboBox.addItem("两部");
       jComboBox.addItem("三部");
       container.add(jComboBox);*/



    }
}

用Vector实现列表框

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

public class Demo28 {
    public static void main(String[] args) {
        new Small();
    }
}
class Small extends JFrame {
    public Small() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       Container container=getContentPane();
        //String[] ban={"11","22","33"};
        Vector vector=new Vector();
        JList jList=new JList(vector);
        vector.add("225");
        vector.add("563");
        vector.add("288");
        container.add(jList);


    }
}

文本框

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

public class Demo29 {
    public static void main(String[] args) {
        new Smalle();
    }
}
class Smalle extends JFrame {
    public Smalle() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container container=getContentPane();
        container.add(new JTextField("WORLD"),BorderLayout.SOUTH);
        container.add(new JTextField("SSDD"),BorderLayout.NORTH);



    }
}

密码框

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

public class Demo30 {
    public static void main(String[] args) {
        new Smallee();
    }
}
class Smallee extends JFrame {
    public Smallee() {
        setVisible(true);
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container container=getContentPane();
        //默认布局为东西南北中的中部
       JPasswordField jPasswordField1= new JPasswordField();//打出来的字变为点
       jPasswordField1.setEchoChar('*');//rang打出来的字变为星号
        container.add(jPasswordField1);





    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值