Java Swing程序设计 Java Swing程序设计实战
Tomas·Wilson 人气:0想了解Java Swing程序设计实战的相关内容吗,Tomas·Wilson在本文为您仔细讲解Java Swing程序设计的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java,Swing程序设计,Java,Swing界面设计,下面大家一起来学习吧。
一、按钮组件
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 = { "SFZ", "军人证", "学生证", "工作证" }; 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(); } }
加载全部内容