Swing
1、JFrame:中文Lable乱码
package com.lesson04;import javax.swing.*;
import java.awt.*;public class JFrameDemo01 {//init 初始化 initializepublic void init() {JFrame jFrame = new JFrame();jFrame.setBounds(200,200,400,400);jFrame.setBackground(Color.YELLOW);jFrame.setVisible(true);Label label = new Label("小刘学Java");jFrame.add(label);//关闭事件jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JFrameDemo01().init();}
}
1.1、JFrame: 中文Lable不乱码
package com.lesson04;import javax.swing.*;
import java.awt.*;public class JFrameDemo {public static void main(String[] args) {new MyJFrame().init();}
}class MyJFrame extends JFrame {public void init() {this.setBounds(200,200,600,800);this.setVisible(true);JLabel jLabel = new JLabel("小刘学Java");this.add(jLabel);jLabel.setHorizontalAlignment(0);Container container = this.getContentPane();container.setBackground(Color.YELLOW);}
}
2、 JDialog弹窗
package com.lesson04;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//主窗口
public class JDialogDemo extends JFrame {public JDialogDemo() {this.setBounds(100,100,400,400);this.setVisible(true);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//JFrame放东西需要容器Container container = this.getContentPane();//绝对布局container.setLayout(null);//按钮JButton jButton = new JButton("点击弹出一个对话框");jButton.setBounds(30,30,200,30);//按钮事件监听jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { //监听器new MyJDialogDemo();}});container.add(jButton);}public static void main(String[] args) {new JDialogDemo();}
}class MyJDialogDemo extends JDialog {public MyJDialogDemo() {this.setBounds(100,100,200,200);this.setVisible(true);Container container = this.getContentPane();container.setLayout(null);container.add(new Label("小刘学Java"));}
}
3、 标签
1. label
new JLabel("XXX");
2. 图标ICON
package com.L.lesson04;import javax.swing.*;
import java.awt.*;//图标:需要实现类 Frame继承
public class IconDemo extends JFrame implements Icon {private int width;private int height;public IconDemo(){};public IconDemo(int width,int height){this.width = width;this.height = height;}public void init(){IconDemo iconDemo = new IconDemo(20,20);//图标可以放在标签上,也可以放在按钮上JLabel jLabel = new JLabel("iconText", iconDemo, SwingConstants.CENTER);Container container = getContentPane();container.add(jLabel);this.setVisible(true);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {IconDemo iconDemo = new IconDemo();iconDemo.init();}@Overridepublic void paintIcon(Component c, Graphics g, int x, int y) {g.fillOval(x,y,width,height);}@Overridepublic int getIconWidth() {return this.width;}@Overridepublic int getIconHeight() {return this.height;}
}
3. 图片Icon
package com.L.lesson04;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class ImageIconDemo extends JFrame {public ImageIconDemo(){//获取图片的地址JLabel jLabel = new JLabel("ImageIcon");URL url = ImageIconDemo.class.getResource("tp01.jpg");ImageIcon imageIcon = new ImageIcon(url); //命名不要冲突了jLabel.setIcon(imageIcon);jLabel.setHorizontalAlignment(SwingConstants.CENTER);Container container = getContentPane();container.add(jLabel);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setBounds(100,100,200,200);}public static void main(String[] args) {new ImageIconDemo();}
}
4、面板
1. 普通面板
package com.L.lesson05;import javax.swing.*;
import java.awt.*;public class JPanelDemo extends JFrame {public JPanelDemo(){Container container = this.getContentPane();container.setLayout(new GridLayout(2,1,10,10));JPanel jPanel01 = new JPanel(new GridLayout(1, 3));JPanel jPanel02 = new JPanel(new GridLayout(1, 2));JPanel jPanel03 = new JPanel(new GridLayout(2, 1));JPanel jPanel04 = new JPanel(new GridLayout(3, 1));jPanel01.add(new JButton("1"));jPanel01.add(new JButton("1"));jPanel01.add(new JButton("1"));jPanel02.add(new JButton("2"));jPanel02.add(new JButton("2"));jPanel03.add(new JButton("3"));jPanel03.add(new JButton("3"));jPanel04.add(new JButton("4"));jPanel04.add(new JButton("4"));jPanel04.add(new JButton("4"));container.add(jPanel01);container.add(jPanel02);container.add(jPanel03);container.add(jPanel04);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);this.setBounds(100,100,200,200);}public static void main(String[] args) {new JPanelDemo();}
}
package com.L.lesson05;import javax.swing.*;
import java.awt.*;public class JScrollDemo extends JFrame {public JScrollDemo(){Container container = this.getContentPane();//文本域JTextArea jTextArea = new JTextArea(20,50);jTextArea.setText("小刘学Java");//Scroll面板JScrollPane jScrollPane = new JScrollPane(jTextArea);container.add(jScrollPane);this.setVisible(true);this.setBounds(100,100,200,350);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JScrollDemo();}
}
5、按钮
1. 图片按钮
package com.L.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo01 extends JFrame {public JButtonDemo01(){Container container = this.getContentPane();//将一个图片变成一个图标URL resource = JButtonDemo01.class.getResource("xx.jpg");ImageIcon imageIcon = new ImageIcon(resource);//把这个图标放在按钮上JButton jButton = new JButton();jButton.setIcon(imageIcon);jButton.setText("联想宇航员");jButton.setToolTipText("这是一个图片按钮");//addcontainer.add(jButton);this.setBounds(100,100,200,400);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JButtonDemo01();}
}
1. 单选按钮
package com.L.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo02 extends JFrame {public JButtonDemo02(){Container container = this.getContentPane();//将一个图片变成一个图标URL resource = JButtonDemo01.class.getResource("xx.jpg");ImageIcon imageIcon = new ImageIcon(resource);//单选框JRadioButton radioButton01 = new JRadioButton("radioButton01");JRadioButton radioButton02 = new JRadioButton("radioButton02");JRadioButton radioButton03 = new JRadioButton("radioButton03");//由于单选框只能选择一个,所以要分组,一个组中只能选择一个ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton01);buttonGroup.add(radioButton02);buttonGroup.add(radioButton03);container.add(radioButton01,BorderLayout.NORTH);container.add(radioButton02,BorderLayout.CENTER);container.add(radioButton03,BorderLayout.SOUTH);this.setBounds(100,100,200,400);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JButtonDemo02();}}
package com.L.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo03 extends JFrame {public JButtonDemo03(){Container container = this.getContentPane();//将一个图片变成一个图标URL resource = JButtonDemo01.class.getResource("xx.jpg");ImageIcon imageIcon = new ImageIcon(resource);//多选框JCheckBox checkBox01 = new JCheckBox("checkBox-01");JCheckBox checkBox02 = new JCheckBox("checkBox-02");JCheckBox checkBox03 = new JCheckBox("checkBox-03");container.add(checkBox01,BorderLayout.SOUTH);container.add(checkBox02,BorderLayout.CENTER);container.add(checkBox03,BorderLayout.NORTH);this.setBounds(100,100,200,400);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new JButtonDemo03();}
}
6、列表
1. 下拉框
package com.L.lesson06;import javax.swing.*;
import java.awt.*;public class TextComboBoxDemo01 extends JFrame {public TextComboBoxDemo01(){Container container = this.getContentPane();JComboBox status = new JComboBox();JPanel panel = new JPanel();status.addItem("null");status.addItem("正在热映");status.addItem("已下架");status.addItem("即将上架");panel.add(status);container.add(panel);this.setBounds(100,100,200,200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new TextComboBoxDemo01();}
}
2. 列表框
package com.L.lesson06;import javax.swing.*;
import java.awt.*;
import java.util.Vector;public class TextComboBoxDemo02 extends JFrame {public TextComboBoxDemo02(){Container container = this.getContentPane();//生成列表的内容
// String[] contents = {"frank","zhang","Li"};Vector contents = new Vector();//把输入的内容放入列表中JList list = new JList(contents);contents.add("zhangSan");contents.add("LiSi");contents.add("XiaoLiu");container.add(list);this.setBounds(100,100,200,200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new TextComboBoxDemo02();}
}
- 应用场景
- 选择地区,或者一些单个选项。一般contents超过两个用下拉框,两个一下用单选框,节省内存
- 列表,用来展示信息,一般是动态扩容的
7、文本框
-
1. 本框
package com.L.lesson06;import javax.swing.*;
import java.awt.*;public class TextTextDemo01 extends JFrame{public TextTextDemo01(){Container container = this.getContentPane();JTextField textField01 = new JTextField("小刘学Java");JTextField textField02 = new JTextField("Java很难学",20);container.add(textField01,BorderLayout.NORTH);container.add(textField02,BorderLayout.SOUTH);this.setBounds(100,100,200,200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new TextTextDemo01();}
}
-
2. 密码框
package com.L.lesson06;import javax.swing.*;
import java.awt.*;public class TextTextDemo02 extends JFrame{public TextTextDemo02(){Container container = this.getContentPane();JPasswordField passwordField = new JPasswordField(); //******passwordField.setEchoChar('*');container.add(passwordField);this.setBounds(100,100,200,200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {new TextTextDemo02();}
}
-
3. 文本域
package com.L.lesson05;import javax.swing.*;
import java.awt.*;public class JScrollDemo extends JFrame {public JScrollDemo(){Container container = this.getContentPane();//文本域JTextArea jTextArea = new JTextArea(20,50);jTextArea.setText("小刘学Java");//Scroll面板JScrollPane jScrollPane = new JScrollPane(jTextArea);container.add(jScrollPane);this.setVisible(true);this.setBounds(100,100,200,350);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JScrollDemo();}
}