程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了具有标题行和列的JTable大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决具有标题行和列的JTable?

开发过程中遇到具有标题行和列的JTable的问题如何解决?下面主要结合日常开发的经验,给出你关于具有标题行和列的JTable的解决方法建议,希望对你解决具有标题行和列的JTable有所启发或帮助;

我认为你正在搜索Rowtable

import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.UIManager.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class JtableRowheader {

    private JFrame frame = new JFrame("Jtable Rowheader");
    private JscrollPane scrollPane;
    private Jtable table;
    private DefaulttableModel model;
    private tablerowsorter<tableModel> sorter;
    private Jtable headertable;

    public JtableRowheader() {
        table = new Jtable(4, 4);
        for (int i = 0; i < table.getRowCount(); i++) {
            table.SETVALueAt(i, i, 0);
        }
        sorter = new tablerowsorter<tableModel>(table.getModel());
        table.setRowSorter(sorter);
        model = new DefaulttableModel() {

            private static final long serialVersionUID = 1L;

            @OverrIDe
            public int getcolumnCount() {
                return 1;
            }

            @OverrIDe
            public Boolean isCellEditable(int row, int col) {
                return false;
            }

            @OverrIDe
            public int getRowCount() {
                return table.getRowCount();
            }

            @OverrIDe
            public Class<?> getcolumnClass(int colNum) {
                switch (colNum) {
                    case 0:
                        return String.class;
                    default:
                        return super.getcolumnClass(colNum);
                }
            }
        };
        headertable = new Jtable(model);
        for (int i = 0; i < table.getRowCount(); i++) {
            headertable.SETVALueAt("Row " + (i + 1), i, 0);
        }
        headertable.setShowGrID(false);
        headertable.setautoResizeMode(Jtable.auto_RESIZE_OFF);
        headertable.setPreferredScrollableVIEwportSize(new Dimension(50, 0));
        headertable.getcolumnModel().getcolumn(0).setPreferreDWIDth(50);
        headertable.getcolumnModel().getcolumn(0).setCellRenderer(new tableCellRenderer() {

            @OverrIDe
            public Component gettableCellRendererComponent(Jtable x, Object value, Boolean isSELEcted, Boolean hasFocus, int row, int column) {

                Boolean SELEcted = table.getSELEctionModel().isSELEctedindex(row);
                Component component = table.gettableheader().getDefaultRenderer().gettableCellRendererComponent(table, value, false, false, -1, -2);
                ((JLabel) component).setHorizontalAlignment(SwingConstants.CENTER);
                if (SELEcted) {
                    component.setFont(component.getFont().deriveFont(Font.bolD));
                    component.setForeg@R_618_7060@color.red);
                } else {
                    component.setFont(component.getFont().deriveFont(Font.PLAIN));
                }
                return component;
            }
        });
        table.getRowSorter().addRowSorterListener(new RowSorterListener() {

            @OverrIDe
            public voID sorterChanged(RowSorterEvent E) {
                model.firetableDataChanged();
            }
        });
        table.getSELEctionModel().addListSELEctionListener(new ListSELEctionListener() {

            @OverrIDe
            public voID valueChanged(ListSELEctionEvent E) {
                model.firetableRowsupdated(0, model.getRowCount() - 1);
            }
        });
        scrollPane = new JscrollPane(tablE);
        scrollPane.setRowheaderVIEw(headertablE);
        table.setPreferredScrollableVIEwportSize(table.getPreferredSize());
        frame.setDefaultCloSEOperation(JFrame.disPOSE_ON_CLOSE);
        frame.add(scrollPanE);
        frame.add(new Jbutton(new AbstractAction("Toggle filter") {

            private static final long serialVersionUID = 1L;
            private RowFilter<tableModel, Object> filter = new RowFilter<tableModel, Object>() {

                @OverrIDe
                public Boolean include(javax.swing.RowFilter.Entry<? extends tableModel, ? extends Object> entry) {
                    return ((number) entry.getValue(0)).intValue() % 2 == 0;
                }
            };

            @OverrIDe
            public voID actionPerformed(ActionEvent E) {
                if (sorter.getRowFilter() != null) {
                    sorter.setRowFilter(null);
                } else {
                    sorter.setRowFilter(filter);
                }
            }
        }), borderLayout.soUTH);
        frame.pack();
        frame.setLOCATIOn(150, 150);
        frame.setVisible(true);
    }

    public static voID main(String[] args) {
        try {// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassname());
            for (LookAndFeelinfo info : UIManager.geTinstalledLookAndFeels()) {
                if (info.getname().equals("Nimbus")) {
                    UIManager.setLookAndFeel(info.getClassname());
                    break;
                }
            }
        } catch (Exception E) {
            //e.printstacktrace();
        }
        EventQueue.invokelater(new Runnable() {

            @OverrIDe
            public voID run() {
                JtableRowheader TesttableRowheader = new JtableRowheader();
            }
        });
    }
}

解决方法

我怎样才能有一个JTable的列和行都有标题?
像这样的东西:

+------+------+------+------+
|/\/\/\| col1 | col2 | col3 |
+------+------+------+------+
| row1 |      |      |      |
+------+------+------+------+
| row2 |      |      |      |
+------+------+------+------+
| row3 |      |      |      |
+------+------+------+------+

谢谢

大佬总结

以上是大佬教程为你收集整理的具有标题行和列的JTable全部内容,希望文章能够帮你解决具有标题行和列的JTable所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。