栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java JTable中的多行选择

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java JTable中的多行选择

使用@Hovercraft的示例和@camickr的建议,以下示例显示了合适的用户界面。尽管它使用按钮,但它

SelectionAction
也适用于菜单或弹出窗口。

import java.awt.*;import java.awt.event.ActionEvent;import javax.swing.*;import javax.swing.DefaultListSelectionModel;import javax.swing.table.DefaultTableModel;public class CheckABunch extends JPanel {    private static final int CHECK_COL = 1;    private static final Object[][] DATA = {        {"One", Boolean.TRUE}, {"Two", Boolean.FALSE},        {"Three", Boolean.TRUE}, {"Four", Boolean.FALSE},        {"Five", Boolean.TRUE}, {"Six", Boolean.FALSE},        {"Seven", Boolean.TRUE}, {"Eight", Boolean.FALSE},        {"Nine", Boolean.TRUE}, {"Ten", Boolean.FALSE}};    private static final String[] COLUMNS = {"Number", "CheckBox"};    private DataModel dataModel = new DataModel(DATA, COLUMNS);    private JTable table = new JTable(dataModel);    private DefaultListSelectionModel selectionModel;    public CheckABunch() {        super(new BorderLayout());        this.add(new JScrollPane(table));        this.add(new ControlPanel(), BorderLayout.SOUTH);        table.setPreferredScrollableViewportSize(new Dimension(250, 175));        selectionModel = (DefaultListSelectionModel) table.getSelectionModel();    }    private class DataModel extends DefaultTableModel {        public DataModel(Object[][] data, Object[] columnNames) { super(data, columnNames);        }        @Override        public Class<?> getColumnClass(int columnIndex) { if (columnIndex == CHECK_COL) {     return getValueAt(0, CHECK_COL).getClass(); } return super.getColumnClass(columnIndex);        }        @Override        public boolean isCellEditable(int row, int column) { return column == CHECK_COL;        }    }    private class ControlPanel extends JPanel {        public ControlPanel() { this.add(new JLabel("Selection:")); this.add(new JButton(new SelectionAction("Clear", false))); this.add(new JButton(new SelectionAction("Check", true)));        }    }    private class SelectionAction extends AbstractAction {        boolean value;        public SelectionAction(String name, boolean value) { super(name); this.value = value;        }        @Override        public void actionPerformed(ActionEvent e) { for (int i = 0; i < dataModel.getRowCount(); i++) {     if (selectionModel.isSelectedIndex(i)) {         dataModel.setValueAt(value, i, CHECK_COL);     } }        }    }    private static void createAndShowUI() {        Jframe frame = new Jframe("CheckABunch");        frame.add(new CheckABunch());        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        frame.pack();        frame.setLocationRelativeTo(null);        frame.setVisible(true);    }    public static void main(String[] args) {        java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() {     createAndShowUI(); }        });    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号