我已经阅读了数百次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)