У меня есть JDialog с двумя панелями: JTable и кнопка. Я хочу установить JDialog так, что (maxHeight= 600 pixels
).Java подходит JDialog для JTable, если размер таблицы меньше заданного значения
(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
@ VGR Pack не поможет, потому что я хочу указать поведение таблицы, а не весь диалог. Кроме того, где бы я набрал maxHeight? – sixtytrees