相关疑难解决方法(0)

如何将控件放在JTable的JTableHeader中?

给定一个JTable类型的列Boolean.class,默认渲染器是a JCheckBox.根据用户选择很容易选择单个单元格,但也可以方便地选择所有复选框或不选中复选框.最近 提到的这些示例JCheckBox在表头中使用,但实现很尴尬且没有吸引力.如果我不需要对列进行排序,我怎样才能将一个表现良好的控件放入JTableHeader

附录:为了方便起见,我添加了我的sscce作为答案,但我很乐意接受一个解决问题的良好行为方面的答案.

java swing jtable jtableheader jtogglebutton

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

对JTable进行排序会导致NullPointerException

我有一个JTable,当点击相应的按钮时,它开始填充在后台继续的文件树步行的结果.这很好用.

然后我决定要对表进行排序.经过一些阅读后,我创建了一个TableRowSorter并设置表来使用它.它似乎工作,但仔细检查后,我注意到几个文件结果不存在.我禁用了分拣机并再次运行程序并且所有文件都存在,再次重新启用分拣机时有些遗漏,但每次丢弃时似乎都是不同的文件.

为了检验这一点,我创建了一个自包含的代码块作为测试(见下文),它代表了JTable代码(事实上,大块直接从现有程序代码中提取).文件树遍历由for循环表示.再次,没有分拣机它完美地工作.但是,当我启用分拣机时(通过取消注释第29行)整个程序冻结,我被告知有一个NullPointerException.

我不知道造成这些问题的原因是什么,事实上它们甚至是相关的.欢迎任何有关错误的想法.

import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Sort extends JFrame{

    private JTable table;
    private DefaultTableModel model;
    private TableRowSorter<DefaultTableModel> sorter;

    private JButton go;

    public Sort(){
        super("Sort");

        // Create table and model
        model = new DefaultTableModel(0, 4);
        table = new JTable(model);

        // Setup sorting
        sorter = new TableRowSorter<DefaultTableModel>(model);
        ArrayList<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
        sortKeys.add(new RowSorter.SortKey(2, SortOrder.ASCENDING));
        sortKeys.add(new RowSorter.SortKey(3, SortOrder.ASCENDING));
        sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
        sorter.setSortKeys(sortKeys); 
        //table.setRowSorter(sorter);

        // Create Scroll Pane
        JScrollPane tableScroller = new JScrollPane(table); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

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

标签 统计

java ×2

jtable ×2

swing ×2

jtableheader ×1

jtogglebutton ×1