[英]JTable Properly aligning inside JScrollPane
我在JScrollView
內有一個JTable
但是在滾動條上似乎沒有更好地對齊,我猜這是因為alignment.Moreover
緣故,而且這是真實代碼的片段:
JFrame frame = new JFrame();
frame.setResizable(false);
frame.setBounds(100, 100, 771, 453);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
panel.setBounds(10, 32, 747, 370);
frame.getContentPane().add(panel);
panel.setLayout(null);
JPanel VPanel = new JPanel();
VPanel.setBounds(297, 43, 440, 224);
panel.add(VPanel);
JTable TableV = new JTable();
TableV.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableV.getTableHeader().setReorderingAllowed(false);
DefaultTableModel Model = new DefaultTableModel(0, 0);
String header[] = new String[] { "Country", "ID", "WAN IP", "User", "OS", "Java version" };
VPanel.add(new JScrollPane(TableV, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
// just adding some data to fill the table
Model.setColumnIdentifiers(header);
//set model into the table object
TableV.setModel(Model);
//just adding some diff data to check if it scrolls down
for (int count = 1; count <= 50; count++)
{
Model.addRow(new Object[] { "data1", "data2", "data3", "data4", "data5", "data6" });
}
for (int count = 1; count <= 70; count++)
{
Model.addRow(new Object[] { "data100", "data200", "data300", "data400", "data500", "data600" });
}
frame.setVisible(true);
了解VPanel(應將其重命名為vPanel以符合Java命名規則)使用FlowLayout,因此滾動窗格可能不太適合其中。 如果希望滾動窗格填充它,請為其提供BorderLayout並添加JScrollPane BorderLayout.CENTER。
例如,
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
@SuppressWarnings("serial")
public class TableFoo extends JPanel {
private static final String[] HEADER = new String[] { "Country", "ID", "WAN IP", "User", "OS", "Java version" };
private static final int PREF_W = 500;
private static final int PREF_H = 400;
private DefaultTableModel model = new DefaultTableModel(HEADER, 0);
private JTable table = new JTable(model);
public TableFoo() {
for (int count = 0; count < 50; count++) {
model.addRow(new Object[] { "data1", "data2", "data3", "data4", "data5", "data6" });
}
for (int count = 0; count < 70; count++) {
model.addRow(new Object[] { "data100", "data200", "data300", "data400", "data500", "data600" });
}
JScrollPane scrollPane = new JScrollPane(table);
setLayout(new BorderLayout());
add(scrollPane, BorderLayout.CENTER);
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}
private static void createAndShowGui() {
JFrame frame = new JFrame("TableFoo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new TableFoo());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.