标签: jtableheader

jtable变为可见后无法设置列宽

我已经阅读了数百次Oracle的API,在这里和其他地方阅读了无数文章,并且在jtable变得可见之后我仍然无法调整列的大小.

正如你可以推断的那样,我也试图使用jcheckbox来设置列的可见性.正如其他文章所述,使用addColumn和removeColumn不会将列返回到其原始位置.我之前使用过一个额外的类来保存列信息,例如列本身,它的标识符和原始索引.在列的可见性发生变化之后,添加/删除数据的问题也变得混乱了.我注意到数据不在正确的列中.因此,我选择设置列的minWidth,preferredWidth和maxWidth.

现在我的问题是,当setColumnVisible设置为true时,下面的代码不会调整列的宽度.用julius summner miller的话说,为什么会这样?

import java.awt.*;
import java.awt.event.*;

import java.util.*;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;

class run
{
    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                Viewer viewer = new Viewer();

                JFrame jframe = new JFrame();
                jframe.add(viewer);
                jframe.createBufferStrategy(1); // required for dual monitor issues
                jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                jframe.setLocation(50,100);
                jframe.pack();
                jframe.setVisible(true);
            }
        });
    }
}

class Viewer extends JPanel
{
    static final long serialVersionUID = 0;

    DefaultTableModel defaultTableModel;
    JTable jtable;
    JCheckBox jcheckBox[];

    public Viewer() …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtableheader preferredsize

4
推荐指数
1
解决办法
793
查看次数

Java JTable标题自动换行

我试图让表格上的标题有自动换行.我已设法做到这一点,但第一个数据行正在扩展.该表的代码是:

public class GenerateTable extends JTable {

    private JCheckBox boxSelect = new JCheckBox();
    private JTableHeader hdGen;

    public class LineWrapCellRenderer extends JTextArea implements TableCellRenderer {

        private static final long serialVersionUID = 1L;
        int rowHeight = 0;  // current max row height for this scan
        @Override
        public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column)
        {
            /*
             * row < 0 means header
             */
            if(row >= 0) {
                setWrapStyleWord(false);
                return this;
            }
            setText((String) value);
            setWrapStyleWord(true);
            setLineWrap(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecellrenderer jtableheader

4
推荐指数
1
解决办法
3716
查看次数

多行标题的JTable标题文本换行(自定义TableCellRenderer)

如何获取多行JTable标题,其中标题列正确放大以适合某些文本然后换行到新行?

如下所示:

包装列标题

目前正在寻找上述要求会返回许多解决方案,而这些解决方案都没有真正解决问题:

http://www.javarichclient.com/multiline-column-header/

为JTable创建多行标题

Java JTable标题自动换行

以上解决方案都建议使用HTML代码,例如:

String[] columnNames = {
    "<html><center>Closing<br>Date</html>",
    "<html><center>Open<br>Price</html>",
    "<html>Third<br>column</html>"
};
Run Code Online (Sandbox Code Playgroud)

由于几个原因,该解决方案并不优雅,主要是因为在变量列名称的情况下,我需要将字符串传递给一个剥离空格并用<br>符号替换它们的函数,但是如果列文本包含出现的非常短的文本它自己的一条线.

我需要确定列的最小和最大长度,然后才能使文本居中成为可能,上述解决方案很快变得过度工程化并且难以管理.

http://www.java2s.com/Code/Java/Swing-Components/MultiLineHeaderTable.htm

http://www.java2s.com/Code/Java/Swing-Components/MultiLineHeaderExample.htm

multilineheader2

以上解决方案需要手动创建一个标题数组,其中的单词已正确拆分,如下所示

  public static Object[][] tableHeaders = new Object[][] {
      new String[] { "Currency" },
      new String[] { "Yesterday's", "Rate" },
      new String[] { "Today's", "Rate" },
      new String[] { "Rate", "Change" } };
Run Code Online (Sandbox Code Playgroud)

-要么-

DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(
        new Object[][] { { "a", "b", "c" }, { "A", "B", "C" } },
        new Object[] { "1st\nalpha", …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtableheader

4
推荐指数
1
解决办法
3527
查看次数

关于JScrollPane中JTable的列宽度

我想在JScrollPane中设置一个具有固定num宽度的JTable的每一列,但我不能这样做,infoTable.getColumnModel().getColumn(0).setPreferredWidth(10); 我使用JScrollPane的默认布局,并在j2se 1.4中添加带有scrollPane的setViewPortView(infoTable)的表.我怎么能这样做?这是我的代码

private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
public TableFrame() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder(
        new java.awt.Color(0, 0, 0)));

    jButton1.setText("jButton1");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    this.setSize(new Dimension(600, 600));
    this.jScrollPane1.setSize(500, 500);
    this.getContentPane().add(this.jScrollPane1, BorderLayout.CENTER);
    this.getContentPane().add(this.jButton1, BorderLayout.WEST);
    table = new JTable(new javax.swing.table.DefaultTableModel(100, 2));
    this.jScrollPane1.setViewportView(table);
    table.getColumnModel().getColumn(0).setWidth(10);
}
Run Code Online (Sandbox Code Playgroud)

PS.回答的问题我需要拖动列来调整大小,所以我无法设置最大和最小尺寸

java swing jtable jscrollpane jtableheader

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

如何在Nimbus外观中集中JTable接头的内容

我如何将具有灵气外观和感觉的JTable Header的内容集中在一起?我试图使用DefaultTableCellHeaderRenderer,但它看起来像这样;

带有Nimbus外观的JTable接头

有没有办法让它们看起来像PARENT_ID列并居中?

java swing jtable nimbus jtableheader

3
推荐指数
1
解决办法
8403
查看次数

JTable标头对齐

我想在我的JTable-derrived类的标题中设置标签的垂直对齐方式.

我知道 setVerticalAlignment(SwingConstants.BOTTOM);

我的标题比字体高得多,我想把文字放在垂直中心的下方.

我怎么能这样做,而不是压倒一切paint()

谢谢

java swing jtable jtableheader

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

根据标题中的文本设置JTable的列宽

我需要根据标题中的文本获得适当的表大小.它包含捷克名称的缩写,例如:"Po","Út","St",atc.但不显示这三个点.

我有这个代码:

width,height- 所有最小行/列大小的最大值
allWidth,allHeight- 应该是整个表的总宽度,高度

//GET DIMENSION
int width = 0;
int height = 0;
int allWidth, allHeight;
for (int col = 0; col < table.getColumnCount(); col++) {        
    TableColumn tableColumn = table.getTableHeader().getColumnModel().getColumn(col);
    TableCellRenderer renderer = tableColumn.getHeaderRenderer();
    if (renderer == null) {
        renderer = table.getTableHeader().getDefaultRenderer();
    }
    Component component = renderer.getTableCellRendererComponent(table,
            tableColumn.getHeaderValue(), false, false, -1, col);
    width = Math.max(component.getPreferredSize().width, width);
    table.getColumnModel().getColumn(col).setPreferredWidth(width);
}
allWidth = table.getColumnCount() * width;
for (int row = 0; row < table.getRowCount(); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtableheader preferredsize

3
推荐指数
1
解决办法
9593
查看次数

如何使用 Netbeans GUI 设计隐藏 JTable 的标题?

我需要隐藏 JTable 的标题栏吗?所以我只需要没有任何实际名称的行和列来显示给用户?有没有其他秋千来做类似的事情?我无法添加

jTable1.setTableHeader(null);
Run Code Online (Sandbox Code Playgroud)

在 initComponents 函数中的任何地方,我尝试过但出现错误?

import java.util.ArrayList;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

public class table extends javax.swing.JFrame {

    public table() {
        initComponents();
        jTable1.setTableHeader(null);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null}
            },
            new String [] {
                "Name", "Age"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Integer.class
            }; …
Run Code Online (Sandbox Code Playgroud)

java swing netbeans jtable jtableheader

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

无法显示选项卡式JTable的表头

我有一个JTabbedPane,其选项卡中包含三个表.的JTabbedPane,再次,是在JScrollPane.我想{"Client", "Action", "Location", "Value"}为每个表显示一个修复表头,它遵循模式.当我试图设置标题时ActionListener(见下文),我可以自由地使用其他方法(例如,最初设置标题).

其他SO帖子也解决了同样的问题,但我无法显示表头.唯一有效的方法是在上述表格中添加数据ActionListener.我不明白为什么标题没有显示,因为我将数据以String-matrix的形式与String表示标题的-array一起传递.

首先,这里是关于我的表的代码片段,它在GUI启动时执行(my initialize()-method).

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
    tabbedPane.setFont(new Font("Carlito", Font.PLAIN, 13));
    tabbedPane.setBackground(Color.WHITE);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

    tableBefore = new JTable();
    tabbedPane.addTab(descrTableBefore, null, tableBefore, null);
    tableBefore.setFont(new Font("Carlito", Font.PLAIN, 13));
    tableBefore.setFocusable(false);

    tableMainTest = new JTable();
    tabbedPane.addTab(descrTableMain, null, tableMainTest, null);
    tabbedPane.setEnabledAt(1, true);
    tableMainTest.setFont(new Font("Carlito", Font.PLAIN, 13));
    tableMainTest.setFocusable(false);

    tableAfter = new JTable();
    tabbedPane.addTab(descrTableAfter, null, tableAfter, null);
    tableAfter.setFont(new Font("Carlito", Font.PLAIN, 13)); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtabbedpane jtableheader

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

自定义TableHeaderUI中断自定义TableRowSorter

我写了一个自定义TableRowSorter,当你点击JTableHeaderfrom
SortOrder.UNSORTED=> SortOrder.ASCENDING=> SortOrder.DESCENDING=> SortOrder.ASCENDING=> SortOrder.DESCENDING=> ...
to
SortOrder.UNSORTED=> SortOrder.ASCENDING=> SortOrder.DESCENDING=> SortOrder.UNSORTED=> SortOrder.ASCENDING=> SortOrder.DESCENDING=> 时,它会改变排序顺序...

ADU_SortOrder.java

package order;

import java.util.ArrayList;
import java.util.List;

import javax.swing.SortOrder;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class ADU_SortOrder<M extends TableModel> extends TableRowSorter<M> {
    public ADU_SortOrder(M model) {
        setModel(model);
    }

    boolean firstTime = true; //Needed in case there are any initial sort keys
    int columnHolder = -1;

    @Override
    public void toggleSortOrder(int column) { …
Run Code Online (Sandbox Code Playgroud)

java sorting swing jtable jtableheader

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