Java Swing程序设计实战

论坛 期权论坛 脚本     
niminba   2021-5-23 05:35   856   0

一、按钮组件

1.1 提交按钮组件

package swing;

import java.awt.*;
import java.awt.event.*;
import java.net.*;

import javax.swing.*;

public class JButtonTest extends JFrame {
 /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public JButtonTest() {
  URL url = JButtonTest.class.getResource("imageButton.jpg");
  Icon icon = new ImageIcon(url);
  setLayout(new GridLayout(3, 2, 5, 5)); // 设置网格布局管理器
  Container c = getContentPane(); // 创建容器
  for (int i = 0; i < 5; i++) {
   // 创建按钮,同时设置按钮文字与图标
   JButton J = new JButton("button" + i, icon);
   c.add(J); // 在容器中添加按钮
   if (i % 2 == 0) {
    J.setEnabled(false); // 设置其中一些按钮不可用
   }
  }
  JButton jb = new JButton(); // 实例化一个没有文字与图片的按钮
  jb.setMaximumSize(new Dimension(90, 30)); // 设置按钮与图片相同大小
  jb.setIcon(icon); // 为按钮设置图标
  jb.setHideActionText(true);
  jb.setToolTipText("图片按钮"); // 设置按钮提示为文字
  jb.setBorderPainted(false); // 设置按钮边界不显示
  jb.addActionListener(new ActionListener() { // 为按钮添加监听事件
   public void actionPerformed(ActionEvent e) {
    // 弹出确认对话框
    JOptionPane.showMessageDialog(null, "弹出对话框");
   }
  });
  c.add(jb); // 将按钮添加到容器中

  setTitle("创建带文字与图片的按钮");
  setSize(350, 150);
  setVisible(true);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
 }

 public static void main(String args[]) {
  new JButtonTest();
 }
}

在这里插入图片描述

1.2 复选框组件

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class CheckBoxTest extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private JPanel panel1 = new JPanel();
    private JPanel panel2 = new JPanel();
    private JTextArea jt = new JTextArea(3, 10);
    private JCheckBox jc1 = new JCheckBox("1");
    private JCheckBox jc2 = new JCheckBox("2");
    private JCheckBox jc3 = new JCheckBox("3");
    public CheckBoxTest() {
        Container c = getContentPane();

        c.setLayout(new BorderLayout());

        c.add(panel1, BorderLayout.NORTH);
        final JScrollPane scrollPane = new JScrollPane(jt);
        panel1.add(scrollPane);

        c.add(panel2, BorderLayout.SOUTH);
        panel2.add(jc1);
        jc1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (jc1.isSelected())
                    jt.append("复选框1被选中\n");
            }
        });

        panel2.add(jc2);
        jc2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (jc2.isSelected())
                    jt.append("复选框2被选中\n");
            }
        });

        panel2.add(jc3);
        jc3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (jc3.isSelected())
                    jt.append("复选框3被选中\n");
            }
        });

        setSize(200, 160);
        setVisible(true);
        setTitle("复选框的使用");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new CheckBoxTest();

    }

}

在这里插入图片描述

二、列表组件

2.1 JComboBox类

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

public class JComboBoxModelTest extends JFrame {
 private static final long serialVersionUID = 1L;
 JComboBox<String> jc = new JComboBox<>(new MyComboBox());
 JLabel jl = new JLabel("请选择证件");

 public JComboBoxModelTest() {
  setSize(new Dimension(160, 180));
  setVisible(true);
  setTitle("在窗口中设置下拉列表框");
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  Container cp = getContentPane();
  cp.setLayout(new FlowLayout());
  cp.add(jl);
  cp.add(jc);
 }

 public static void main(String[] args) {
  new JComboBoxModelTest();

 }

}

class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String> {
 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 String selecteditem = null;
 String[] test = { "身份证", "军人证", "学生证", "工作证" };

 public String getElementAt(int index) {
  return test[index];
 }

 public int getSize() {
  return test.length;
 }

 public void setSelectedItem(Object item) {
  selecteditem = (String) item;
 }

 public Object getSelectedItem() {
  return selecteditem;
 }

 public int getIndex() {
  for (int i = 0; i < test.length; i++) {
   if (test[i].equals(getSelectedItem()))
    return i;
  }
  return 0;
 }
}

在这里插入图片描述

2.2 列表框组件

import java.awt.*;

import javax.swing.*;

public class JListTest extends JFrame {
 /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public JListTest() {
  Container cp = getContentPane();
  
  cp.setLayout(null);
  JList<String> jl = new JList<>(new MyListModel());
  JScrollPane js = new JScrollPane(jl);
  js.setBounds(10, 10, 100, 100);
  cp.add(js);
  setTitle("在这个窗体中使用了列表框");
  setSize(200, 150);
  setVisible(true);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
 }
 
 public static void main(String args[]) {
  new JListTest();
 }
}

class MyListModel extends AbstractListModel<String> {
 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 private String[] contents = { "列表1", "列表2", "列表3", "列表4", "列表5", "列表6" };
 
 public String getElementAt(int x) {
  if (x < contents.length)
   return contents[x++];
  else
   return null;
 }
 
 public int getSize() {
  return contents.length;
 }
}

在这里插入图片描述

三、文本组件

3.1 文本框组件

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class JTextFieldTest extends JFrame {

 /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public JTextFieldTest() {
  setSize(250, 100);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  Container cp = getContentPane();
  getContentPane().setLayout(new FlowLayout());
  final JTextField jt = new JTextField("aaa", 20);
  final JButton jb = new JButton("清除");
  cp.add(jt);
  cp.add(jb);
  jt.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    // TODO 自动生成方法存根
    jt.setText("触发事件");
   }
  });
  jb.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    jt.setText("");
    jt.requestFocus();
   }
  });
  setVisible(true);
 }

 public static void main(String[] args) {
  new JTextFieldTest();
 }
}

在这里插入图片描述

3.2 密码框

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class JTextFieldTest extends JFrame {

 /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public JTextFieldTest() {
  setSize(250, 100);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  Container cp = getContentPane();
  getContentPane().setLayout(new FlowLayout());
//  final JTextField jt=new JTextField("aaa",20);
  JPasswordField jp = new JPasswordField("", 20);
  jp.setEchoChar('*');
  final JButton jb = new JButton("清除");

  cp.add(jp);
  cp.add(jb);
  jp.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    // TODO 自动生成方法存根
    jp.setText("触发事件");
   }
  });
  jb.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    jp.setText("");
    jp.requestFocus();
   }
  });
  setVisible(true);
 }

 public static void main(String[] args) {
  new JTextFieldTest();
 }
}

在这里插入图片描述

3.3 文本域组件

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

public class JTextAreaTest extends JFrame {
 public JTextAreaTest() {
  setSize(200, 100);
  setTitle("定义自动换行的文本域");
  setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  Container cp = getContentPane();
  JTextArea jt = new JTextArea("文本域", 6, 6);
  jt.setLineWrap(true);
  cp.add(jt);
  setVisible(true);
 }

 public static void main(String[] args) {
  new JTextAreaTest();

 }

}

在这里插入图片描述

四、常用时间监听器

4.1 动作事件监听器

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class SimpleEvent extends JFrame {

 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 private JButton jb = new JButton("我是按钮,点击我");

 public SimpleEvent() {
  setLayout(null);
  setSize(200, 100);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  Container cp = getContentPane();
  cp.add(jb);
  jb.setBounds(10, 10, 100, 30);
  jb.addActionListener(new jbAction());
  setVisible(true);
 }

 class jbAction implements ActionListener {
  public void actionPerformed(ActionEvent arg0) {
   jb.setText("我被单击了");
  }
 }

 public static void main(String[] args) {
  new SimpleEvent();
 }
}

在这里插入图片描述

在这里插入图片描述

4.2 焦点事件监听器

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FocusEventTest extends JFrame {

 /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public FocusEventTest() {
  setSize(250, 100);
  setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  Container cp = getContentPane();
  getContentPane().setLayout(new FlowLayout());

  final JLabel label = new JLabel();
  getContentPane().add(label);
  JTextField jt = new JTextField("请单击其他文本框", 10);
  JTextField jt2 = new JTextField("请单击我", 10);
  cp.add(jt);
  cp.add(jt2);
  jt.addFocusListener(new FocusListener() {
   // 组件失去焦点时调用的方法
   public void focusLost(FocusEvent arg0) {
    JOptionPane.showMessageDialog(null, "文本框失去焦点");
   }

   // 组件获取键盘焦点时调用的方法
   public void focusGained(FocusEvent arg0) {
   }
  });
  setVisible(true);
 }

 public static void main(String[] args) {
  new FocusEventTest();
 }

}

在这里插入图片描述
在这里插入图片描述

到此这篇关于JavaSwing实现程序界面设计的文章就介绍到这了,更多相关JavaSwing程序界面设计内容请搜索社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持社区!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP