Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将列宽设置为零,即未使列不可见_Java_Swing_Jtable_Tablecolumn - Fatal编程技术网

Java 无法将列宽设置为零,即未使列不可见

Java 无法将列宽设置为零,即未使列不可见,java,swing,jtable,tablecolumn,Java,Swing,Jtable,Tablecolumn,我试图从JTable中创建一列,通过将width设置为零使其不可见,但它无法发生,并且在width=15时保持可见。这是代码- public void restoreColumnWithWidth(int column, int width) { try { TableColumn tableColumn = table.getColumnModel().getColumn(column); table.getTableHeader

我试图从
JTable
中创建一列,通过将width设置为零使其不可见,但它无法发生,并且在width=15时保持可见。这是代码-

public void restoreColumnWithWidth(int column, int width) {
        try {
            TableColumn tableColumn = table.getColumnModel().getColumn(column);
            table.getTableHeader().setResizingColumn(tableColumn);
            tableColumn.setWidth(width);
            tableColumn.setMaxWidth(width);
            tableColumn.setMinWidth(width);
            tableColumn.setPreferredWidth(width);
        } catch (Exception ex) {
        }
    }

代码有什么问题?

如果应该删除它,而不仅仅是隐藏:将其从表模型中删除。 如果只应将其隐藏并在以后显示,则可以从TableColumnModel中删除TableColumn

将列高度设为0有点假。

  • 不,永远不要从
    TableModel
    中删除
    TableColumn
    ,这是错误的建议,而不是使用内置方法

  • 请注意,此方法仅从视图中移除列,在模型中,移除的列仍然存在,并且您可以通过使用将其还原为可见的移除列

编辑


谢谢mKorbel先生,但是你能看看我的代码吗。这有什么不对吗?将宽度设置为零必须有效。@Ashish Pancholi请查看我的编辑,我们讨论过相同的内容吗:-)谢谢mKorbel先生。在看到示例代码之后,现在就清楚了。案件已解决。@Ashish Pancholi不客气,很高兴为您提供+1的好线索
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Stack;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

public class TableRowHeight {

    private static final long serialVersionUID = 1L;
    private JFrame frame = new JFrame("p*s*s*s*s*t*t");
    private String[] columnNames = {"one", "two", "Playing with", "four", "five",};
    private String[][] data = {
        {"aaaaaa", "bbbbbb", "cccccc", "dddddd", "eeeeeee",},
        {"bbbbbb", "cccccc", "dddddd", "eeeeeee", "aaaaaa",},
        {"cccccc", "dddddd", "eeeeeee", "aaaaaa", "bbbbbb",},
        {"dddddd", "eeeeeee", "aaaaaa", "bbbbbb", "cccccc",},
        {"eeeeeee", "aaaaaa", "bbbbbb", "cccccc", "dddddd",}};
    private JTable table = new JTable(new DefaultTableModel(data, columnNames));
    private TableColumnModel tcm = table.getColumnModel();
    private Stack<TableColumn> colDeleted = new Stack<TableColumn>();
    private JButton restoreButton = new JButton("Restore Column Size");
    private JButton hideButton = new JButton("Set Column Size to Zero");
    private JButton deleteButton = new JButton("Delete Column");
    private JButton addButton = new JButton("Restore Column");

    public TableRowHeight() {
        table.setRowMargin(4);
        table.setRowHeight(30);
        table.setFont(new Font("SansSerif", Font.BOLD + Font.PLAIN, 20));
        JScrollPane scrollPane = new JScrollPane(table);
        for (int i = 0; i < (tcm.getColumnCount()); i++) {
            tcm.getColumn(i).setPreferredWidth(100);
        }
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        restoreButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                tcm.getColumn(2).setPreferredWidth(100);
            }
        });
        hideButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                tcm.getColumn(2).setPreferredWidth(000);
            }
        });
        deleteButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (table.getColumnCount() > 0) {
                    TableColumn colToDelete = table.getColumnModel().getColumn(table.getColumnCount() - 1);
                    table.removeColumn(colToDelete);
                    table.validate();
                    colDeleted.push(colToDelete);
                    addButton.setEnabled(true);
                } else {
                    deleteButton.setEnabled(false);
                }
            }
        });
        addButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (colDeleted.size() > 0) {
                    table.addColumn(colDeleted.pop());
                    table.validate();
                    deleteButton.setEnabled(true);
                } else {
                    addButton.setEnabled(false);
                }
            }
        });
        JPanel btnPanel = new JPanel();
        btnPanel.add(hideButton);
        btnPanel.add(restoreButton);
        btnPanel.add(deleteButton);
        btnPanel.add(addButton);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(scrollPane, BorderLayout.CENTER);
        frame.add(btnPanel, BorderLayout.SOUTH);
        frame.pack();
        frame.setLocation(150, 150);
        frame.setVisible(true);
    }

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

            public void run() {
                TableRowHeight frame = new TableRowHeight();
            }
        });
    }
}
JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JTable.getTableHeader().setReorderingAllowed(false);