JTable не добавляет первую ячейку, она пуста - PullRequest
0 голосов
/ 03 декабря 2011

Jtable показывает пустую ячейку для первой ячейки, вот код:

     DefaultTableModel model = new DefaultTableModel();
     table = new JTable(model){
        public boolean isCellEditable(int rowIndex, int colIndex) {
               return false; //Disallow the editing of any cell
             }};

          model.addColumn("JobID");                                              
                  model.addColumn("Job Location");
                  model.addColumn("Job Size");
                  model.addRow(new Object[]{"r5","2","3"});

вывод равен

ID         Location     Size
(*)        2            3

* пусто для ячейки (1,1)

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

этот код верен для JTable , должен быть другой, независимо от того, что сгенерировано ...

enter image description here

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class DefTabMod extends JFrame {

    private static final long serialVersionUID = 1L;

    public DefTabMod() {

        DefaultTableModel model = new DefaultTableModel();
        JTable table = new JTable(model) {

            private static final long serialVersionUID = 1L;

            @Override
            public boolean isCellEditable(int rowIndex, int colIndex) {
                return false; //Disallow the editing of any cell
            }
        };

        model.addColumn("JobID");
        model.addColumn("Job Location");
        model.addColumn("Job Size");
        model.addRow(new Object[]{"r5", "2", "3"});
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                DefTabMod frame = new DefTabMod();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.setLocation(150, 150);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
0 голосов
/ 04 мая 2013

ключевая вещь здесь - эта строка:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

она решает все проблемы!

...