このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
■テーブル最終行への行追加
[ サンプルプログラムのソースコード - TableSample02.java - ]
- import java.awt.BorderLayout;
- import java.awt.Button;
- import java.awt.Color;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.Box;
- import javax.swing.JApplet;
- import javax.swing.JComboBox;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.JTextField;
- import javax.swing.table.DefaultTableColumnModel;
- import javax.swing.table.DefaultTableModel;
- public class TableSample02 extends JApplet implements ActionListener {
- private static final long serialVersionUID = 1L;
- JTable table;
- DefaultTableModel model;
- String[] header = new String[] {"名前","年齢","性別"};
- String[][] data = new String[][]
- {{"山田一郎","45","男性"},
- {"山田恵子","40","女性"},
- {"山田花子","20","女性"},
- {"山田太郎","19","男性"}};
- JPanel panel = new JPanel();
- JTextField nameFld = new JTextField(20);
- JTextField ageFld = new JTextField(3);
- String[] items = { "男性", "女性" };
- JComboBox sexCmb = new JComboBox(items);
- Button addRowBtn = new Button("行追加");
- public void init() {
-
- // 背景色の設定
- Container c = getContentPane();
- c.setBackground(Color.WHITE);
- int w = getWidth();
- int h = getHeight();
- setLayout(new BorderLayout());
-
- // テーブルオブジェクトの生成
- model = new DefaultTableModel(data,header);
- table = new JTable(model);
- table.setGridColor(Color.BLUE);
- DefaultTableColumnModel columnModel = (DefaultTableColumnModel)table.getColumnModel();
- columnModel.getColumn(1).setPreferredWidth(20);
- // テーブルをレイアウトに追加
- JScrollPane sc = new JScrollPane(table);
- sc.setBackground(Color.WHITE);
- sc.setPreferredSize(new Dimension(w, h-60));
- add(sc, BorderLayout.NORTH);
- panel.setPreferredSize(new Dimension(w, 30));
- panel.setLayout(new BorderLayout());
- nameFld.setPreferredSize(new Dimension((int)(w*0.6),25));
- panel.add(nameFld,BorderLayout.WEST);
- ageFld.setPreferredSize(new Dimension((int)(w*0.2),25));
- panel.add(ageFld,BorderLayout.CENTER);
- panel.add(sexCmb,BorderLayout.EAST);
- add(panel,BorderLayout.CENTER);
-
- addRowBtn.setPreferredSize(new Dimension(w, 30));
- addRowBtn.addActionListener(this);
- add(addRowBtn, BorderLayout.SOUTH);
-
- // テーブルの上下左右の余白設定
- add(Box.createHorizontalStrut(10), BorderLayout.EAST);
- add(Box.createHorizontalStrut(10), BorderLayout.WEST);
- }
- public void actionPerformed(ActionEvent event) {
- if (event.getSource() == addRowBtn) {
- // 最終行に1行追加
- model.addRow(new String[] {nameFld.getText(),ageFld.getText(),(String)sexCmb.getSelectedItem()});
- }
-
- }
-
- }
|
[ サンプルプログラムを実行してみる ]
サンプルを実行してみるには下のボタンをクリックしてください。
※サンプル実行ページは、別ウィンドウで開きます。実行には時間がかかることがありますのでご注意ください。
[ サンプルプログラムの解説 ]
テーブルに行を追加するには、DefaultTableModelからaddRowメソッド(サンプル83行目)を使います。
サンプルでは、行追加ボタンを押したときに行を追加しています。追加行には、氏名と年齢の入力欄と性別の選択ボックスで入力した値を設定しています。