标签: defaulttablemodel

JTable行选择背景问题.

我有一个JTable并在JTable和其他属性中设置图片作为背景我使用此代码.

tblMainView= new JTable(dtModel){
        public Component prepareRenderer(TableCellRenderer renderer, int row, 
                   int column) 
        {
        Component c = super.prepareRenderer( renderer, row, column);
        // We want renderer component to be transparent so background image 
        // is visible
        if( c instanceof JComponent )
        ((JComponent)c).setOpaque(false);
        return c;
        }
        ImageIcon image = new ImageIcon( "images/watermark.png" );          
          public void paint( Graphics g )
        {
        // First draw the background image - tiled 
        Dimension d = getSize();
        for( int x = 0; x < d.width; x += image.getIconWidth() …
Run Code Online (Sandbox Code Playgroud)

java swing jtable renderer defaulttablemodel

1
推荐指数
1
解决办法
3142
查看次数

如何在JTable中的特定位置插入一列

我有一个带有预定义模型的 JTable

如何要求模型在特定位置插入特定列?

so i want something like : DefaultTableModel.insertRow(int,Object[]) for columns

java swing jtable defaulttablemodel

1
推荐指数
2
解决办法
1万
查看次数

JTable和Table模型什么时候用?

我对这两者之间的区别有所了解。但是,我对何时使用何时使用有些困惑。我只知道,

  • 要显示 JTable,请创建一个 JTable 并为其设置相应的表模型。
  • 任何时候,如果我们想改变那个表中的数据,改变模型中的数据,那么这些改变就会反映在视图中。

我们可以从视图和模型中获取表的值。这是我感到困惑的地方。如果发生任何类似(行选择)的事件,那么我必须从中获取值?是从视图还是模型?考虑到 JTable 的排序和过滤,使用的最佳实践是什么?

java swing jtable tablemodel defaulttablemodel

1
推荐指数
1
解决办法
2094
查看次数

插入数据后无法刷新JTable内容

我正在实现JTable作为用户注册表单,我差不多完成了,但是当添加数据时它没有显示输入的最新数据,并且JTable的大小也非常小.我怎么能增加呢?

代码在下面的链接JTable实现中

java swing jtable defaulttablemodel

1
推荐指数
1
解决办法
389
查看次数

获取更新的 JTable 值

我正在尝试使用 JTable 来更新 Java SWING 应用程序中的用户,目前当我编辑单元格时,只有单击不同的单元格从而触发 tableModelListener 才能获得编辑结果。我希望能够在不单击其他单元格的情况下在按钮事件上获取这些更改的值。

我的表定义:

DefaultTableModel tableModel = new DefaultTableModel();

table = new JTable(tableModel);

tableModel.addColumn("Key");
tableModel.addColumn("Value");

if (PatientView.getSelected() != null){
    tableModel.addRow(new Object[]{"Name", PatientView.getSelected().getName()});
    tableModel.addRow(new Object[]{"Age", PatientView.getSelected().getAge()});
    tableModel.addRow(new Object[]{"Height", PatientView.getSelected().getHeight()});
    tableModel.addRow(new Object[]{"Weight", PatientView.getSelected().getWeight()});
    tableModel.addRow(new Object[]{"BMI", PatientView.getSelected().getCalculatedBMI()});

}
Run Code Online (Sandbox Code Playgroud)

表监听器

tableModel.addTableModelListener(new TableModelListener(){
            @Override
            public void tableChanged(TableModelEvent arg0) {
                int row = arg0.getFirstRow();
                int column = arg0.getColumn();
                Object data = tableModel.getValueAt(0, 1);
                System.out.println(data);
            }
        });
Run Code Online (Sandbox Code Playgroud)

按钮动作监听器

okButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent arg0) {
                        Vector data = tableModel.getDataVector();
                        System.out.println(table.getValueAt(0, 1)); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecelleditor defaulttablemodel

1
推荐指数
1
解决办法
774
查看次数

将DefaultTableModel数据复制到剪贴板

我有下一个JTable

private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(null);

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"Hat", "New York", "1000"},
            {"T-Shirt", "New York", "3500"},
            {"Sweater", "Washington", "2800"},
            {"Bag", "California", "7000"},
        },
        new String [] {
            "Name", "Warehouse", "Quantity"
        }
    ));
    jScrollPane1.setViewportView(jTable1);

    getContentPane().add(jScrollPane1);
    jScrollPane1.setBounds(19, 11, 375, 170);

    jButton1.setText("Copy");
    getContentPane().add(jButton1);
    jButton1.setBounds(113, 195, 63, 23);

    jButton2.setText("Exit");
    getContentPane().add(jButton2);
    jButton2.setBounds(225, 195, 53, 23);

    pack();
}
Run Code Online (Sandbox Code Playgroud)

我希望按钮将模型的信息复制到剪贴板,但它不起作用,我尝试过使用

String myString = "This text will …
Run Code Online (Sandbox Code Playgroud)

java clipboard swing jtable defaulttablemodel

1
推荐指数
1
解决办法
2127
查看次数

java swing应用程序中的未知错误

嗨,我使用第二个线程每2秒更新一次JTable的DefaultTableModel并且随机地随机,它会抛出以下错误.

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
    at java.util.Vector.elementAt(Vector.java:470)
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)
    at javax.swing.JTable.getValueAt(JTable.java:2716)
    at javax.swing.JTable.prepareRenderer(JTable.java:5714)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2108)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2010)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1806)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
    at javax.swing.JComponent.paintComponent(JComponent.java:769)
    at javax.swing.JComponent.paint(JComponent.java:1045)
    at javax.swing.JComponent.paintChildren(JComponent.java:878)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JViewport.paint(JViewport.java:731)
    at javax.swing.JComponent.paintChildren(JComponent.java:878)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5212)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5160)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4971)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
    at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native …

java swing jtable indexoutofboundsexception defaulttablemodel

1
推荐指数
1
解决办法
972
查看次数

在2个不同的JtabbedPanes中创建相同的jtable

我想创建2个JTabbedPanes,它们具有相同的JTable但在其中一列中具有不同的值.现在由于某种原因只有一个标签出现,我不知道为什么.我也是通过创造2种不同DefaultTableModel的方式来做到最好的方式吗?

public static void tableMaker(DefaultTableModel m, DefaultTableModel m1, final Map<String, NumberHolder> uaCount)
{
    final JFrame frame = new JFrame("Strings");     
    JPanel panel1 = new JPanel();
            JPanel panel2 = new JPanel();
    JTabbedPane tabbedPane = new JTabbedPane();

    m.addColumn("String");
    m.addColumn("Occurrences");
            m1.addColumn("String");
    m1.addColumn("Occurrences");
    JTable table = new JTable(m);
            JTable table = new JTable(m1);
    table.setAutoCreateRowSorter(true);
    JScrollPane scrollPane1 = new JScrollPane(table1);
            JScrollPane scrollPane2 = new JScrollPane(table2);
    frame.getContentPane().setLayout(new BorderLayout());                                                       
    panel1.add(scrollPane1);
            panel2.add(scrollPane2);
    frame.getContentPane().add(panel1, BorderLayout.CENTER);
            frame.getContentPane().add(panel2, BorderLayout.CENTER);        
    frame.add(tabbedPane, BorderLayout.NORTH);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
    tabbedPane.addTab("Tab 1", null, panel1,
                "String length 2");
    tabbedPane.addTab("Tab …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtabbedpane defaulttablemodel

1
推荐指数
1
解决办法
2874
查看次数

使用AbstractTableModel从JTable中删除行

我有一个JTable.此表使用我设计的自定义模型; 自定义模型是extends AbstractTableModel.我有一个按钮,用户可以删除选定/突出显示的行.

我试过这段代码,但它给了我一个类强制转换异常 -

myTableModel cannot be cast to DefaultTableModel. 
Run Code Online (Sandbox Code Playgroud)

下面是代码.

DefaultTableModel model =  (DefaultTableModel)table.getModel();
        model.removeRow(table.convertRowIndexToModel(table.getSelectedRow()));
        model.fireTableDataChanged();`
Run Code Online (Sandbox Code Playgroud)

我在网上搜索过,但它总是DefaultTableModel- 但我有AbstarctTableModel.

我们如何解决这个问题?

java swing jtable abstracttablemodel defaulttablemodel

1
推荐指数
1
解决办法
654
查看次数

java.lang.ArrayIndexOutOfBoundsException:21> = 21

我收到以下错误消息.

java.lang.ArrayIndexOutOfBoundsException: 21 >= 21
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
        at com.vanuston.medeil.uitables.PurchaseTable.createTable(PurchaseTable.java:182)
        at com.vanuston.medeil.ui.Purchase.applyDefaults$(Purchase.fx:130)
Run Code Online (Sandbox Code Playgroud)

在下面的代码的第三行.

jTable.removeColumn(jTable.getColumnModel().getColumn(19));
jTable.removeColumn(jTable.getColumnModel().getColumn(20));
jTable.removeColumn(jTable.getColumnModel().getColumn(21));
jTable.removeColumn(jTable.getColumnModel().getColumn(22));
Run Code Online (Sandbox Code Playgroud)

我已经添加了第21和第22列DefaultTableModel.

Vector cols = new Vector();
    Vector data = new Vector();
    int len = colName.length;
    System.out.println("col length " + len);
    for (int i = 0; i < initRow; i++) {
        Vector c = new Vector();
        for (int j = 0; j < len; j++) {
            if (j == 19 && j == 20) {
                c.addElement(Boolean.FALSE);
            } else {
                c.addElement(null);
            } …
Run Code Online (Sandbox Code Playgroud)

java swing jtable defaulttablemodel

0
推荐指数
1
解决办法
885
查看次数