gpt4 book ai didi

java - 将 JButton 添加到 JScrollPane

转载 作者:行者123 更新时间:2023-12-02 01:25:47 24 4
gpt4 key购买 nike

我从 GeeksforGeeks 中获取了以下代码,它使用 JScrollPane 在 JTable 中显示二维数组的内容:

public class JTableExamples { 
// frame
JFrame f;
// Table
JTable j;

// Constructor
JTableExamples()
{
// Frame initiallization
f = new JFrame();

// Frame Title
f.setTitle("JTable Example");

// Data to be displayed in the JTable
String[][] data = {
{ "Kundan Kumar Jha", "4031", "CSE" },
{ "Anand Jha", "6014", "IT" }
};

// Column Names
String[] columnNames = { "Name", "Roll Number", "Department" };

// Initializing the JTable
j = new JTable(data, columnNames);
j.setBounds(30, 40, 200, 300);

// adding it to JScrollPane
JScrollPane sp = new JScrollPane(j);
f.add(sp);
// Frame Size
f.setSize(500, 200);
// Frame Visible = true
f.setVisible(true);
}

我想做的是在表格下方添加一个简单的组件(如 JButton),但它似乎不起作用。我尝试通过将 JButton 添加到 JPanel 并将 JPanel 添加到框架来修改代码:

   JButton button = new JButton("Back");
JPanel panel = new JPanel();
panel.add(button);
f.add(sp);
f.add(panel);

但这只是删除整个表格并用一个按钮替换它。我还尝试将按钮添加到 JPanel 并将 JPanel 添加到 JScrollPane:

   JButton button = new JButton("Back");
JPanel panel = new JPanel();
panel.add(button);
sp.add(panel);
f.add(sp);

但这似乎并没有改变任何事情。我还尝试修改 JScrollPanel 的首选尺寸和最大尺寸,但无济于事 - 它总是占据整个屏幕并阻止 JButton 出现在屏幕上。

这里不是为了设计,只是为了功能:在我的 JTable 下方显示一个 JButton。任何建议将不胜感激。预先感谢您!

最佳答案

JFrame 的默认布局管理器是 BorderLayout

f.add(sp);
f.add(panel);

如果您没有为 BorderLayout 指定约束,则假定为 CENTER。您只能将单个组件添加到CENTER

您的代码应该是:

f.add(sp, BorderLayout.CENTER);
f.add(panel, BorderLayout.PAGE_END);

请注意,JPanel 的默认布局管理器是 FlowLayout。因此按钮将在面板中水平居中。

此外,不要使用 JPanel,而是尝试将按钮直接添加到框架的 PAGE_END 中以查看差异。

阅读 Swing 教程中关于 Using Layout Manager 的部分有关使用每种不同布局管理器的更多信息和示例,以了解上述建议的差异。

编辑:

Is there a way to decrease the height of the table

如果你知道你有一张小 table ,那么你可以使用:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

这将使滚动 Pane 的大小与表格相同。

然后你使用:

//f.setSize(500, 200); 
f.pack();

现在所有组件都将以其首选尺寸显示。

关于java - 将 JButton 添加到 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56979994/

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