N9 GUI(三)
作者:迷恋
一、Swing窗口、面板
1、实例
package demo25;
import javax.swing.*;
import java.awt.*;
public class JFrameDemo extends JFrame{
//init();初始化
public void init(){
JFrame jFrame = new JFrame("这是一个JFrame窗口");
jFrame.setVisible(true);
jFrame.setBounds(100,100,200,200);
//添加一个容器
Container container = jFrame.getContentPane();
container.setBackground(Color.blue);
//设置文字JLabel
JLabel jLabel = new JLabel("欢迎来到祖安");
container.add(jLabel);
//设置文字对齐
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
//关闭事件
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JFrameDemo().init();
}
}
运行结果::
二、JDialog弹窗
1、实例
package demo26;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DialogDemo extends JFrame {
public DialogDemo(){
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//JFrame 放东西,容器
Container container = this.getContentPane();
//绝对布局(定位)
container.setLayout(null);
//按钮
JButton button = new JButton("点击弹出一个谈话框");
button.setBounds(50,50,200,50);
//点击这个按钮的时候,弹出弹窗
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//弹窗
new MyDialog();
}
});
container.add(button);
}
public static void main(String[] args) {
new DialogDemo();
}
}
class MyDialog extends JDialog {
public MyDialog(){
this.setVisible(true);
this.setBounds(200,200,500,500);
this.setTitle("这是一个弹窗");
Container container = this.getContentPane();
JLabel jLabel = new JLabel();
jLabel.setFont(new Font("Dialog",12,22));
jLabel.setText("弹出了一个美女广告!(手动滑稽)");
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jLabel);
}
}
运行结果:
点击按钮:
三、Icon、ImageIcon
1、Icon
实例:
package demo27;
import javax.swing.*;
import java.awt.*;
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(15, 15);
//图标放在标签,也可以放在按钮上!
JLabel jLabel = new JLabel("iconTest", iconDemo, SwingConstants.CENTER);
Container container = getContentPane();
container.add(jLabel);
this.setVisible(true);
this.setBounds(100,100,200,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new IconDemo().init();
}
@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;
}
}
运行结果:
2、ImageIcon
实例:
package demo27;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class ImageIconDemo extends JFrame {
public ImageIconDemo(){
//创建一个标签
JLabel jLabel = new JLabel("大吉大利,今晚吃鸡");
//获取图片地址
URL url = ImageIconDemo.class.getResource("PUBG.jpg");
//创建一个图片图标
ImageIcon imageIcon = new ImageIcon(url);
//设置图片的大小
imageIcon.setImage(imageIcon.getImage().getScaledInstance(192*3,108*3,Image.SCALE_DEFAULT));
//把图片图标添加到标签上去
jLabel.setIcon(imageIcon);
//设置标签水平对齐
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
//创建面板
Container container = this.getContentPane();
container.add(jLabel);
this.setVisible(true);
this.setBounds(100,100,800,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ImageIconDemo();
}
}
以上实例中图片的位置:(同包下)
运行结果:
四、面板
1、Panel
实例:
package demo28;
import javax.swing.*;
import java.awt.*;
public class JPanelDemo extends JFrame {
public JPanelDemo(){
Container container = this.getContentPane();
container.setLayout(new GridLayout(2,2,10,10));//后面两个参数的意思是间距
JPanel panel1 = new JPanel(new GridLayout(1,3));
JPanel panel2 = new JPanel(new GridLayout(1,2));
JPanel panel3 = new JPanel(new GridLayout(2,1));
JPanel panel4 = new JPanel(new GridLayout(3,2));
panel1.add(new Button("1"));
panel1.add(new Button("1"));
panel1.add(new Button("1"));
panel2.add(new Button("2"));
panel2.add(new Button("2"));
panel3.add(new Button("3"));
panel3.add(new Button("3"));
panel4.add(new Button("4"));
panel4.add(new Button("4"));
panel4.add(new Button("4"));
panel4.add(new Button("4"));
panel4.add(new Button("4"));
panel4.add(new Button("4"));
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(panel4);
this.setVisible(true);
this.setSize(500,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JPanelDemo();
}
}
运行结果:
2、JScrollPanel
实例:
package demo28;
import javax.swing.*;
import java.awt.*;
public class JScrollPanelDemo extends JFrame {
public JScrollPanelDemo(){
Container container = this.getContentPane();
//文本域
JTextArea textArea = new JTextArea();
textArea.setText("欢迎来到王者荣耀");
//Scroll面板
JScrollPane scrollPane = new JScrollPane(textArea);
container.add(scrollPane);
this.setVisible(true);
this.setBounds(100,100,400,300);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPanelDemo();
}
}
运行结果:
当一直输入回车,内容超出预设的窗体大小时,就会产生滚动条:
五、单选框、复选框
1、单选框
package demo29;
import javax.swing.*;
import java.awt.*;
public class JButtonDemo01 extends JFrame {
public JButtonDemo01(){
Container container = this.getContentPane();
//单选框
JRadioButton jRadioButton1 = new JRadioButton("我是选项一");
JRadioButton jRadioButton2 = new JRadioButton("我是选项二");
JRadioButton jRadioButton3 = new JRadioButton("我是选项三");
//由于单元框只能选择一个,分组,一个分组中只能选择一个
ButtonGroup group = new ButtonGroup();
group.add(jRadioButton1);
group.add(jRadioButton2);
group.add(jRadioButton3);
container.setLayout(new GridLayout(3,1));
container.add(jRadioButton1);
container.add(jRadioButton2);
container.add(jRadioButton3);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo01();
}
}
运行结果:
只能选择一个
2、复选框
实例:
package demo29;
import javax.swing.*;
import java.awt.*;
public class JCheckBocDemo extends JFrame{
public JCheckBocDemo(){
Container container = this.getContentPane();
// 多选框
JCheckBox jCheckBox1 = new JCheckBox("我是选项一");
JCheckBox jCheckBox2 = new JCheckBox("我是选项二");
JCheckBox jCheckBox3 = new JCheckBox("我是选项三");
container.setLayout(new GridLayout(3,1));
container.add(jCheckBox1);
container.add(jCheckBox2);
container.add(jCheckBox3);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JCheckBocDemo();
}
}
运行结果:
六、列表
1、下拉框
实例:
package demo30;
import javax.swing.*;
import java.awt.*;
public class JComboBoxDemo extends JFrame {
public JComboBoxDemo(){
Container container = this.getContentPane();
JComboBox jComboBox = new JComboBox();
jComboBox.addItem(null);
jComboBox.addItem("正在热映");
jComboBox.addItem("已下架");
jComboBox.addItem("即将上映");
container.add(jComboBox);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JComboBoxDemo();
}
}
运行结果:
2、列表框
实例:
package demo30;
import javax.swing.*;
import java.awt.*;
public class JListDemo extends JFrame {
public JListDemo(){
Container container = this.getContentPane();
//生成列表的内容
String[] contents = {"1","2","3"};
//列表需要放入内容
JList jList = new JList(contents);
container.add(jList);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JListDemo();
}
}
运行结果:
- 应用场景
下拉框:选择地区、或者一些单选项
列表框:展示信息,一般是动态扩容
七、文本框
1、文本框
实例:
package demo31;
import javax.swing.*;
import java.awt.*;
public class JTextFieldDemo extends JFrame {
public JTextFieldDemo(){
Container container = this.getContentPane();
JTextField jTextField1 = new JTextField("hello");
JTextField jTextField2 = new JTextField("world");
container.setLayout(new GridLayout(2,1));
container.add(jTextField1);
container.add(jTextField2);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextFieldDemo();
}
}
运行结果:
2、密码框
实例:
package demo31;
import javax.swing.*;
import java.awt.*;
public class JPasswordFieldDemo extends JFrame {
public JPasswordFieldDemo(){
Container container = this.getContentPane();
JPasswordField jPasswordField = new JPasswordField();
jPasswordField.setEchoChar('*');
container.add(jPasswordField);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JPasswordFieldDemo();
}
}
运行结果:
3、文本域
实例:
package demo31;
import javax.swing.*;
import java.awt.*;
public class JTextAreaDemo extends JFrame {
public JTextAreaDemo() {
Container container = this.getContentPane();
TextArea textArea = new TextArea(10,20);
container.add(textArea);
this.setVisible(true);
this.setBounds(100,100,400,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextAreaDemo();
}
}
运行结果: