【发布时间】:2021-05-19 10:58:21
【问题描述】:
我有一个JTable,用户数据分布在rows 和columns。我想要什么时候,我在 JTextField 中查找使用 ID 的用户,调整大小(height,宽度相同)取决于rows 找到。 为什么表格宽度变小了?
代码:
tabla_clientes.setPreferredScrollableViewportSize(
new Dimension(tabla_clientes.getPreferredSize().width, tabla_clientes.getRowHeight()*20)
);
//...
private void resizer() {
revalidate();
int w = jScrollPane.getPreferredSize().width; //width scroll pane
int h1 = jScrollPane.getViewport().getViewSize().height; //height viewport
int h2 = tabla_clientes.getPreferredScrollableViewportSize().height; //table height
if(h1<h2)
jScrollPane.setSize(new Dimension(w,h1));
else
jScrollPane.setSize(tabla_clientes.getPreferredScrollableViewportSize());
}
public void filtrar_dni() {
int columna = 0;
TRSFiltro.setRowFilter(RowFilter.regexFilter(textfield_buscar.getText(), columna));
}
private void textfield_buscarKeyTyped(java.awt.event.KeyEvent evt) {
textfield_buscar.addKeyListener(new KeyAdapter(){
public void keyReleased(final KeyEvent e){
String texto = (textfield_buscar.getText());
textfield_buscar.setText(texto);
filtrar_dni();
resizer();
}
});
TRSFiltro = new TableRowSorter<DefaultTableModel>((DefaultTableModel) tabla_clientes.getModel());
tabla_clientes.setRowSorter(TRSFiltro);
}
【问题讨论】:
-
您似乎没有使用任何布局管理器。是故意的吗?因为通过使用布局,您将不再需要自己进行任何计算。查看布局:docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
-
@spi 我没有使用任何布局。有必要吗?
-
不,这不是绝对必要的。但是如果你使用一个会容易得多。它实现了所有必要的计算,以使组件的大小适应可用空间。它将对框架的大小调整、组件的隐藏等做出反应。
-
@spi 如果不使用布局,可能的解决方案是什么?和布局?我希望能对这两个选项进行简要说明,以了解其中的区别。
-
见下面的例子。