【发布时间】:2016-11-26 10:10:51
【问题描述】:
我有一个带有两个面板的 JDialog:一个 JTable 和一个按钮。我想设置 JDialog 以便 (maxHeight= 600 pixels):
(1) 如果表格高度小于maxLength,则表格完全显示,没有空格,但所有行都适合。
(2) 如果高度大于maxHeight,它将高度限制为maxHeight,并在侧面显示滚动条。
到目前为止,我的大部分 JDialog 都在工作,但我不知道如何控制 JTable 的高度。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TestGUI {
public static void main(String[] args) {
int a=10;
Object[][] data = new Object[a][2]; //Fill table with some data
for (int i = 0; i < a; i++) {data[i][0]=i; data[i][1]=i*i; }
JDialog dialog = new JDialog();
dialog.setLayout(new BorderLayout());
String[] header = {"Number", "Square"};
DefaultTableModel model = new DefaultTableModel(data, header);
JTable table = new JTable(model);
table.setPreferredScrollableViewportSize(new Dimension(450, 600));
table.setFillsViewportHeight(true);
JScrollPane js = new JScrollPane(table);
js.setVisible(true);
dialog.add(js, BorderLayout.CENTER);
JButton okButton = new JButton(new AbstractAction("OK") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
dialog.add(buttonPanel, BorderLayout.SOUTH);
//dialog.setSize(new Dimension(300, 600));
dialog.setMinimumSize(new Dimension(255, 175));
dialog.setVisible(true);
}
}
【问题讨论】:
-
我认为您在将组件添加到对话框后忘记调用
dialog.pack();。 -
@VGR Pack 无济于事,因为我想指定表的行为,而不是整个对话框。此外,我应该在哪里输入 maxHeight?
标签: java jtable dimensions