这里重写了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); } }