Java JTable在JScrollPane内部正确对齐
我在Java JTable在JScrollPane内部正确对齐,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,我在JScrollView中有一个JTable,但它似乎没有很好地对齐。滚动条很小,我猜这是因为对齐。此外,这是一个来自真实代码的片段: JFrame frame = new JFrame(); frame.setResizable(false); frame.setBounds(100, 100, 771, 453); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getConte
JScrollView
中有一个JTable
,但它似乎没有很好地对齐。滚动条很小,我猜这是因为对齐。此外,
这是一个来自真实代码的片段:
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);
JFrame=newjframe();
frame.setresizeable(false);
框架.立根(100100771453);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel面板=新的JPanel();
面板.设置顺序(新边框(1,1,1,1,(颜色)新颜色(0,0,0));
嵌板.立根(10,32,747,370);
frame.getContentPane().add(面板);
panel.setLayout(空);
JPanel VPanel=新的JPanel();
VPanel.setBounds(297,43,440,224);
面板。添加(VPanel);
JTable TableV=新的JTable();
表V.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableV.getTableHeader().SetReOrOrderingAllowed(false);
DefaultTableModel=新的DefaultTableModel(0,0);
字符串头[]=新字符串[]{“国家”、“ID”、“WAN IP”、“用户”、“操作系统”、“Java版本”};
添加(新的JScrollPane(表V,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u AS\u NEEDED));
//只是添加一些数据来填充表格
Model.setColumnIdentifiers(标头);
//将模型设置到表对象中
表五.集合模型(模型);
//只是添加一些差异数据来检查它是否向下滚动
对于(int count=1;count了解VPanel(应重命名为VPanel以符合Java命名规则)使用FlowLayout,因此滚动窗格可能不适合它。为它指定一个BorderLayout,并添加JScrollPane BorderLayout.CENTER(如果希望滚动窗格填充它)
e、 g
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
@抑制警告(“串行”)
公共类TableFoo扩展了JPanel{
私有静态最终字符串[]头=新字符串[]{“国家”、“ID”、“WAN IP”、“用户”、“操作系统”、“Java版本”};
专用静态最终整数预值W=500;
私有静态最终整型参数H=400;
私有DefaultTableModel=new DefaultTableModel(表头,0);
专用JTable表=新JTable(模型);
公共表foo(){
用于(int count=0;count<50;count++){
addRow(新对象[]{“data1”、“data2”、“data3”、“data4”、“data5”、“data6”});
}
用于(int count=0;count<70;count++){
addRow(新对象[]{“data100”、“data200”、“data300”、“data400”、“data500”、“data600”});
}
JScrollPane scrollPane=新的JScrollPane(表);
setLayout(新的BorderLayout());
添加(滚动窗格,BorderLayout.CENTER);
}
@凌驾
公共维度getPreferredSize(){
如果(isPreferredSizeSet()){
返回super.getPreferredSize();
}
返回新维度(PREF_W,PREF_H);
}
私有静态void createAndShowGui(){
JFrame=新JFrame(“TableFoo”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(新TableFoo());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
createAndShowGui();
}
});
}
}
了解VPanel(应重命名为VPanel以符合Java命名规则)使用FlowLayout,因此滚动窗格可能不适合它。为它指定BorderLayout并添加JScrollPane BorderLayout.CENTER(如果希望滚动窗格填充它)
e、 g
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
@抑制警告(“串行”)
公共类TableFoo扩展了JPanel{
私有静态最终字符串[]头=新字符串[]{“国家”、“ID”、“WAN IP”、“用户”、“操作系统”、“Java版本”};
专用静态最终整数预值W=500;
私有静态最终整型参数H=400;
私有DefaultTableModel=new DefaultTableModel(表头,0);
专用JTable表=新JTable(模型);
公共表foo(){
用于(int count=0;count<50;count++){
addRow(新对象[]{“data1”、“data2”、“data3”、“data4”、“data5”、“data6”});
}
用于(int count=0;count<70;count++){
addRow(新对象[]{“data100”、“data200”、“data300”、“data400”、“data500”、“data600”});
}
JScrollPane scrollPane=新的JScrollPane(表);
setLayout(新的BorderLayout());
添加(滚动窗格,BorderLayout.CENTER);
}
@凌驾
公共维度getPreferredSize(){
如果(isPreferredSizeSet()){
返回super.getPreferredSize();
}
返回新维度(PREF_W,PREF_H);
}
私有静态void createAndShowGui(){
JFrame=新JFrame(“TableFoo”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(新TableFoo());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
createAndShowGui();
}
});
}
}
无论是现在还是将来,使用空布局和设置边界都会让你陷入困境,你需要摆脱新手这样做的习惯。学习布局管理器,然后使用布局管理器。了解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();
}
});
}
}