用动态数组保存学生姓名
2015-09-07 15:29
405 查看
这个实例是JAVA
从入门到精通(实例版)10.3.5 范例4 的原问题。
创建一个窗体类,输入学生姓名,并可以实现添加姓名和删除姓名。
代码如下:
package tenthChapter;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class DynamicArray extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField textField; //输入姓名的文本框
private List<String> arraylist = new ArrayList<String>();//存储输入姓名的集合
private JList<String> list;
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
DynamicArray dynamicArray = new DynamicArray();//创建一个新类
dynamicArray.setVisible(true);
}catch(Exception e){
e.printStackTrace();
}
}
});
}
public DynamicArray(){// 构造函数
getContentPane().setLayout(null);
setBounds(100,100,520,380); //边界大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("用动态数组保存学生姓名"); //窗体框名
final BackgroundPanel backgroundPanel = new BackgroundPanel(); //背景组件
backgroundPanel.setBounds(0, 0, 510, 380); //设置边界
getContentPane().add(backgroundPanel); //将背景组件加入到总组件
JScrollPane scrollPane = new JScrollPane(); //设置一个滚动框组件
backgroundPanel.add(scrollPane,BorderLayout.CENTER);
scrollPane.setBounds(10, 10, 300, 280); //设置大小
list = new JList<String>(); //创建一个列表控件
scrollPane.setViewportView(list);//创建一个视口(如果有必要)并设置其视图。这一句我查了资料,并没有弄得很明白
final JPanel panel = new JPanel();
scrollPane.setColumnHeaderView(panel);
final JLabel label = new JLabel("学生姓名:");
panel.add(label);
textField = new JTextField();
textField.setColumns(10);
panel.add(textField);
final JButton button1 = new JButton();
button1.setBounds(350, 30, 100, 30);
button1.setText("添加学生");
button1.addActionListener(new ActionListener(){//添加事件监听
public void actionPerformed(ActionEvent e){
do_button1_actionPerformed(e);//调用该方法
}
});
backgroundPanel.add(button1);
final JButton button2 = new JButton();
button2.setBounds(350, 100, 100, 30);
backgroundPanel.add(button2);
button2.setText("删除学生");
button2.addActionListener(new ActionListener(){//添加事件监听
public void actionPerformed(ActionEvent e){
do_button2_actionPerformed(e);
}
});
}
protected void do_button1_actionPerformed(ActionEvent e){ //点击添加学生按钮函数
textField.requestFocusInWindow(); //获得创建新窗体的焦点,焦点设为姓名输入框
textField.selectAll(); //选择文本框,准备下次输入
String text = textField.getText();//获得文本框输入的内容
if(text.isEmpty()){
return;
}
arraylist.add(text); //将内容加到数组集合
repalceModel(); //把数组集合的内容显示到界面列表控件中
}
protected void do_button2_actionPerformed(ActionEvent e){
Object value = list.getSelectedValue(); //获取列表控件的选择项
arraylist.remove(value); //从数组集合中删除该选择项
repalceModel(); //把数组集合的内容显示到界面列表控件中
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private void repalceModel(){
//为列表控件设置数据模型显示数组集合中的数据
list.setModel(new AbstractListModel(){
private static final long serialVersionUID = -3406879889366471211L;
@Override
public int getSize(){//获取数组大小
return arraylist.size();
}
@Override
public Object getElementAt(int index){//获取指定索引元素
return arraylist.get(index);
}
});
}
}
从入门到精通(实例版)10.3.5 范例4 的原问题。
创建一个窗体类,输入学生姓名,并可以实现添加姓名和删除姓名。
代码如下:
package tenthChapter;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class DynamicArray extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField textField; //输入姓名的文本框
private List<String> arraylist = new ArrayList<String>();//存储输入姓名的集合
private JList<String> list;
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
DynamicArray dynamicArray = new DynamicArray();//创建一个新类
dynamicArray.setVisible(true);
}catch(Exception e){
e.printStackTrace();
}
}
});
}
public DynamicArray(){// 构造函数
getContentPane().setLayout(null);
setBounds(100,100,520,380); //边界大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("用动态数组保存学生姓名"); //窗体框名
final BackgroundPanel backgroundPanel = new BackgroundPanel(); //背景组件
backgroundPanel.setBounds(0, 0, 510, 380); //设置边界
getContentPane().add(backgroundPanel); //将背景组件加入到总组件
JScrollPane scrollPane = new JScrollPane(); //设置一个滚动框组件
backgroundPanel.add(scrollPane,BorderLayout.CENTER);
scrollPane.setBounds(10, 10, 300, 280); //设置大小
list = new JList<String>(); //创建一个列表控件
scrollPane.setViewportView(list);//创建一个视口(如果有必要)并设置其视图。这一句我查了资料,并没有弄得很明白
final JPanel panel = new JPanel();
scrollPane.setColumnHeaderView(panel);
final JLabel label = new JLabel("学生姓名:");
panel.add(label);
textField = new JTextField();
textField.setColumns(10);
panel.add(textField);
final JButton button1 = new JButton();
button1.setBounds(350, 30, 100, 30);
button1.setText("添加学生");
button1.addActionListener(new ActionListener(){//添加事件监听
public void actionPerformed(ActionEvent e){
do_button1_actionPerformed(e);//调用该方法
}
});
backgroundPanel.add(button1);
final JButton button2 = new JButton();
button2.setBounds(350, 100, 100, 30);
backgroundPanel.add(button2);
button2.setText("删除学生");
button2.addActionListener(new ActionListener(){//添加事件监听
public void actionPerformed(ActionEvent e){
do_button2_actionPerformed(e);
}
});
}
protected void do_button1_actionPerformed(ActionEvent e){ //点击添加学生按钮函数
textField.requestFocusInWindow(); //获得创建新窗体的焦点,焦点设为姓名输入框
textField.selectAll(); //选择文本框,准备下次输入
String text = textField.getText();//获得文本框输入的内容
if(text.isEmpty()){
return;
}
arraylist.add(text); //将内容加到数组集合
repalceModel(); //把数组集合的内容显示到界面列表控件中
}
protected void do_button2_actionPerformed(ActionEvent e){
Object value = list.getSelectedValue(); //获取列表控件的选择项
arraylist.remove(value); //从数组集合中删除该选择项
repalceModel(); //把数组集合的内容显示到界面列表控件中
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private void repalceModel(){
//为列表控件设置数据模型显示数组集合中的数据
list.setModel(new AbstractListModel(){
private static final long serialVersionUID = -3406879889366471211L;
@Override
public int getSize(){//获取数组大小
return arraylist.size();
}
@Override
public Object getElementAt(int index){//获取指定索引元素
return arraylist.get(index);
}
});
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统