将 JButton 添加到 JScrollPame

我有以下代码取自 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 出现在屏幕上。


此处不考虑设计,只考虑功能:让 JButton 出现在我的 JTable 下方。任何建议将不胜感激。先感谢您!


梵蒂冈之花
浏览 79回答 1
1回答

有只小跳蛙

JFrame 的默认布局管理器是BorderLayout.f.add(sp); f.add(panel);当您不指定约束时,BorderLayout假定CENTER。您只能将一个组件添加到CENTER.相反,您的代码应该是:f.add(sp, BorderLayout.CENTER); f.add(panel, BorderLayout.PAGE_END);请注意 a 的默认布局管理器JPanel是FlowLayout. 因此按钮将在面板中水平居中。此外,不使用 JPanel,而是尝试将按钮直接添加到PAGE_END框架中以查看差异。阅读 Swing 教程中有关使用布局管理器的部分,了解更多信息和示例,以了解使用每种不同布局管理器的不同之处,以了解上述建议的差异。编辑:有没有办法降低桌子的高度如果你知道你有一张小桌子,那么你可以使用:table.setPreferredScrollableViewportSize(table.getPreferredSize());这将使滚动窗格的大小与表格相同。然后你使用://f.setSize(500, 200); f.pack();现在所有组件都将以其首选大小显示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java