草庐IT

java - 无法将列宽设置为零,即无法使列不可见

coder 2024-03-10 原文

我试图从 JTable 中创建一列,通过将宽度设置为零来隐藏它,但它不会发生,并且它对宽度 = 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) {
        }
    }

代码有什么问题?

最佳答案

编辑

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

编辑2

你也要检查

JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JTable.getTableHeader().setReorderingAllowed(false);

关于java - 无法将列宽设置为零,即无法使列不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088853/

有关java - 无法将列宽设置为零,即无法使列不可见的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  4. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  7. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  8. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  9. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  10. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

随机推荐