我对使用jtable有点怀疑。
这就是我想要的:
在没有最大化窗口的jtable中设置水平scroollbar。
查看具有最大可能宽度的每一列(或单元格中的列标题或文本)。
根据jtable的宽度来扩展我的窗口(我不知道是否可能)。
我有:
一个没有水平滚动条的jtable(如果我把“mytable.setautoresizemode(jtable.auto_resize_off);”,我的table并没有占据整个框架的宽度)
如果jtable的大小很长,它不会显示单元格中的所有数据。
我将感谢任何帮助。
实用的内部框架:
public AplicacionesJInternalFrame()
{
super("Aplicaciones",
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
//...Create the GUI and put it in the window...
//...Then set the window size or call pack...
//setSize(300,300);
//Set the window's location.
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
getContentPane().add(createToolBar(),BorderLayout.NORTH);
jTableAplicaciones = new JTable(new AplicacionesTableModel());
jTableAplicaciones.getColumnModel().getColumn(0).setCellRenderer(new AplicacionesRenderer());
jTableAplicaciones.setPreferredScrollableViewportSize(new Dimension(500, 270));
jTableAplicaciones.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(jTableAplicaciones);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
initColumnSizes(jTableAplicaciones);
//jTableAplicaciones.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
add(scrollPane);
pack();
}
private void initColumnSizes(JTable table) {
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer();
int width = 0;
for (int i = 0; i < table.getColumnCount(); i++)
{
/* Tamaño dato de celda */
TableCellRenderer renderer = table.getCellRenderer(0, i);
Component componente = table.prepareRenderer(renderer, 0, i);
int componenteWidth = componente.getPreferredSize().width;
/* Tamaño cabecera columna */
column = table.getColumnModel().getColumn(i);
comp = headerRenderer.getTableCellRendererComponent(
null, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width;
column.setPreferredWidth(Math.max(headerWidth, componenteWidth)+2);
}
}
如果你需要其他资料,请告诉我。提前谢谢。
1条答案
按热度按时间xlpyo6sf1#
如果jtable的大小很长,它不会显示单元格中的所有数据。
可以使用表列调整器来确保所有列都是适当的。但是,这不会强制表格填充整个宽度。