Java 将JButton添加到JScrollPame
以下代码取自Geeksforgeks,它使用JScrollPane在JTable中显示二维数组的内容:Java 将JButton添加到JScrollPame,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,以下代码取自Geeksforgeks,它使用JScrollPane在JTable中显示二维数组的内容: public class JTableExamples { // frame JFrame f; // Table JTable j; // Constructor JTableExamples() { // Frame initiallization f = new JFrame(); // Frame Title f.setTitl
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 button = new JButton("Back");
JPanel panel = new JPanel();
panel.add(button);
sp.add(panel);
f.add(sp);
我试图做的是在表下面添加一个简单的组件(比如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:
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 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);
如果未为边界布局指定约束,则假定中心。只能将单个组件添加到中心
相反,您的代码应该是:
f.add(sp, BorderLayout.CENTER);
f.add(panel, BorderLayout.PAGE_END);
注意JPanel的默认布局管理器是FlowLayout
。因此,按钮将在面板中水平居中
另外,不要使用JPanel,试着直接将按钮添加到框架的页面末尾
,以查看差异
阅读Swing教程中关于的部分,以获取更多信息和示例,使用每个不同的布局管理器来理解上述建议的差异
编辑:
有没有办法降低桌子的高度
如果您知道您有一张小桌子,那么您可以使用:
table.setPreferredScrollableViewportSize(table.getPreferredSize());
这将使滚动窗格与表的大小相同
然后使用:
//f.setSize(500, 200);
f.pack();
现在,所有组件都将以其首选大小显示。JFrame的默认布局管理器是BorderLayout
f.add(sp);
f.add(panel);
如果未为边界布局指定约束,则假定中心。只能将单个组件添加到中心
相反,您的代码应该是:
f.add(sp, BorderLayout.CENTER);
f.add(panel, BorderLayout.PAGE_END);
注意JPanel的默认布局管理器是FlowLayout
。因此,按钮将在面板中水平居中
另外,不要使用JPanel,试着直接将按钮添加到框架的页面末尾
,以查看差异
阅读Swing教程中关于的部分,以获取更多信息和示例,使用每个不同的布局管理器来理解上述建议的差异
编辑:
有没有办法降低桌子的高度
如果您知道您有一张小桌子,那么您可以使用:
table.setPreferredScrollableViewportSize(table.getPreferredSize());
这将使滚动窗格与表的大小相同
然后使用:
//f.setSize(500, 200);
f.pack();
现在,所有组件都将按其首选尺寸显示。工作非常出色,非常感谢!最后一个问题:按钮现在出现在页面的最底部(我猜这就是page_END所做的),而(大部分)空表继续占据几乎整个页面。有没有办法降低桌子的高度(去掉空的空间)并“举起”按钮?我猜这就是PAGE_END所做的-不要猜!这就是为什么我给了你Swing教程的链接。本教程解释了各种约束对每个布局管理器的意义。见编辑。工作很有魅力,非常感谢!最后一个问题:按钮现在出现在页面的最底部(我猜这就是page_END所做的),而(大部分)空表继续占据几乎整个页面。有没有办法降低桌子的高度(去掉空的空间)并“举起”按钮?我猜这就是PAGE_END所做的-不要猜!这就是为什么我给了你Swing教程的链接。本教程解释了各种约束对每个布局管理器的意义。请参见编辑。