gpt4 book ai didi

可滚动表的 Java Swing 布局?

转载 作者:行者123 更新时间:2023-11-29 03:28:03 25 4
gpt4 key购买 nike

我目前在 JPanel 中有一个 JPanel,我想在其中放置我的 JScrollPane/JTable。我无法将它放在我想要的位置。我想让表格适合 JPanel 的整个宽度,但只填充垂直显示表格中所有动态数据所需的空间。

这是我目前的代码,图片是它的样子。蓝色区域是表格/滚动情况的嵌套面板。还有为什么 table 下面有一个愚蠢的灰色盒子。我该如何摆脱它?对不起,图片很敏感,数据很敏感。谢谢。

    JPanel panel = new JPanel();
panel.setBounds(50, 100, 300, 450);
panel.setBackground(Color.blue);
contentPane.add(panel); //contentPane is the outter panel

JScrollPane scrollpane = new JScrollPane(table); //table was created earlier
panel.add(scrollpane,BorderLayout.NORTH);

table panel

示例程序(我不要 table 下面那个大矩形)

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Test {

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(350,100,1000,800);
JPanel contentPane = new JPanel(new BorderLayout());
frame.setContentPane(contentPane);
JTable table = new JTable(5,5);
JScrollPane scrollpane = new JScrollPane(table);
table.setFillsViewportHeight(true);
contentPane.add(scrollpane,BorderLayout.NORTH);
frame.revalidate();
}

}

最佳答案

Also why is there a stupid gray box under the table. How do I get rid of that?

尝试使用 table.setFillsViewportHeight(true);将其添加到 JSCrollPane 之后:就像您现在所做的那样:

   JPanel panel = new JPanel();
// other code
panel.setLayout(new BorderLayout()); // not sure whither you are already doing this

JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);

panel.add(scrollPane, BorderLayout.CENTER);

调用 setFillsViewportHeight(true) 函数设置 fillsViewportHeight 属性。当此属性为 true 时,table 使用容器的整个高度,即使 table 没有足够的行来使用整个高度垂直空间。

注意:

  1. 我没有看到您向添加了 JScrollPane面板 添加了布局。我希望您知道 JPanel 使用 FlowLayout 作为默认布局,它遵循组件的首选大小提示。同样,panel.add(scrollpane, BorderLayout.NORTH); 产生歧义。当我们使用约束:BorderLayout.NORTH 到具有 BorderLayout 作为布局管理器的组件。

  2. Frame 的内容 Pane 具有 BorderLayout 作为默认布局管理器 您正在使用我们通常使用的 setBounds() 设置绑定(bind)到 panel在使用 AbsoluteLayout(null) 布局时做。 AbsoluteLayout在 Swing 中开发应用程序

  3. 时行不通

关于可滚动表的 Java Swing 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com