動的配列で学生名を保存する
3774 ワード
この例は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 arraylist = new ArrayList();//
private JList 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(); //
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);
}
});
}
}