当前位置: 首页 > 知识库问答 >
问题:

使用arrayList值将行值填充到SWING JTable JAVA

姚和顺
2023-03-14
for (int v = 0; v < values1.size(); v++) {

            values2.add(values1.get(v));
        }
       Object jFill[] = values2.toArray();

        model.addRow(jFill);

谢谢你。

共有1个答案

曹均
2023-03-14

在这里,我的完整工作表模型工作,您可以添加行,移除行和更改值。

您可以轻松地向帧中添加:

    protected MyTableModel mytableModel = new MyTableModel();
    scroll = new JScrollPane(mytableModel);

table类:

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;

import org.apache.poi.ss.usermodel.Header;

class MyTableModel extends JPanel   {



    private static final int CHECK_COL = 5;
    private static  Object[][] DATA = { };
    public static String[] COLUMNS = {"Col1","Col2","Col3","Col4","Col5", "Checkbox"};
    protected DataModel dataModel = new DataModel(DATA, COLUMNS);
    private JTable table = new JTable(dataModel);
    private DefaultListSelectionModel selectionModel;

    public MyTableModel(){
        super(new BorderLayout());
        this.add(new JScrollPane(table));
        this.add(new ControlPanel(), BorderLayout.SOUTH);
        table.setPreferredScrollableViewportSize(new Dimension(250, 175));
        selectionModel = (DefaultListSelectionModel) table.getSelectionModel();
        JTableHeader header = table.getTableHeader();
        header.setDefaultRenderer(new HeaderRenderer(table));
    }


    private class DataModel extends DefaultTableModel {


        public DataModel(Object[][] data, Object[] COLUMNS) {
            super(data, COLUMNS);
        }

        @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) {
            if(column==CHECK_COL && !Main.checked)
                return true;
            return false;
        }

    }
    private static class HeaderRenderer implements TableCellRenderer {

        DefaultTableCellRenderer renderer;

        public HeaderRenderer(JTable table) {
            renderer = (DefaultTableCellRenderer)
                table.getTableHeader().getDefaultRenderer();
            renderer.setHorizontalAlignment(JLabel.CENTER);
        }

        @Override
        public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int col) {
            return renderer.getTableCellRendererComponent(
                table, value, isSelected, hasFocus, row, col);
        }
    }

    private class ControlPanel extends JPanel {

        /**
         * 
         */
         private static final long serialVersionUID = -7342459414751761853L;

        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);
                }
            }
        }
    }



    public void setValueAt_Cell(String val, int row, int col) {
        // TODO Auto-generated method stub
        if(row>=dataModel.getRowCount()){
            dataModel.addRow(new Object[] {"","","","","",false});

        }
        dataModel.setValueAt(val, row, col);
    }



    public String getValAtPos(int row,int col) {
        //System.out.println(dataModel.getValueAt(row, col));
        if(row>=dataModel.getRowCount()){
            return null;
        }
        return dataModel.getValueAt(row, col).toString();
    }

    public int getRowCount(){
        return DATA.length;
    }
    public boolean get_checked_row(int row){
        return (boolean) dataModel.getValueAt(row, 5);
    }



    public void clear() {
        while(dataModel.getRowCount()!=0){
            for(int i=0;i<dataModel.getRowCount();i++){
                dataModel.removeRow(i);     
            }
            dataModel.fireTableRowsDeleted(0, getRowCount());
            dataModel.fireTableDataChanged();
        }
    }


}
 类似资料:
  • 问题内容: 我的Android应用程序需要使用中填充ListView数据ArrayList。 我这样做很麻烦。有人可以帮我提供代码吗? 问题答案: 你需要通过进行操作,以使ArrayList(或任何其他集合)适应布局中的项目(ListView,Spinner等)。 这是Android开发人员指南所说的: 一个管理任意对象数组支持的。默认情况下,此类期望提供的资源ID引用单个。如果要使用更复杂的布局

  • 问题内容: 是否可以将值添加到ArrayList而不是使用HashMap 就像是: 现在收到错误: 谢谢 问题答案: JSTL并非旨在执行此类操作。这确实属于业务逻辑,该业务逻辑将(间接)由Servlet类控制。 创建一个如下的servlet: 这个地图上的。 现在,在其中创建一个JSP文件(将其放置以防止直接访问): 不需要,因为servlet已经设置了它。 现在通过调用servlet + JS

  • 我正在为我的网站写一个聊天页面。我已经成功地设法向用户询问他们的名字,简单地说欢迎“username”。问题是,我还希望在聊天本身的名称输入框中使用相同的名称,而不是用户每次希望写消息时都必须输入自己的名称。我使用了onclick=来提示用户输入他们的名字,但我无法让它在名称框中显示该名字。 编辑:我发现,虽然javascript代码submit.php,但submit.php根本不显示:/

  • 我正在尝试合并两个数据帧: 第一个数据帧,,用INTEGERS/STRINGS填充 左边的数据框一起被整数/列表填充。 当我使用pandas函数时,新的数据框将用NaN填充右侧的数据框,而不是列表 我期望使用两个原始数据帧中的值创建一个新的合并数据帧。相反,在新的数据框中,“control”数据框中的所有值都是正确的,但“together”数据框中的所有列表都是正确的 以下是一些样本数据: 以下是

  • 我有2个xml配置文件,如下所示 app-context.xml: test-cache.xml

  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{