亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 JButton 添加到 JScrollPame

將 JButton 添加到 JScrollPame

梵蒂岡之花 2023-03-17 17:06:38
我有以下代碼取自 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 下方。任何建議將不勝感激。先感謝您!
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

JFrame 的默認布局管理器是BorderLayout.

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

當您不指定約束時,BorderLayout假定CENTER。您只能將一個組件添加到CENTER.

相反,您的代碼應該是:

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

請注意 a 的默認布局管理器JPanelFlowLayout. 因此按鈕將在面板中水平居中。

此外,不使用 JPanel,而是嘗試將按鈕直接添加到PAGE_END框架中以查看差異。

閱讀 Swing 教程中有關使用布局管理器的部分,了解更多信息和示例,以了解使用每種不同布局管理器的不同之處,以了解上述建議的差異。

編輯:

有沒有辦法降低桌子的高度

如果你知道你有一張小桌子,那么你可以使用:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

這將使滾動窗格的大小與表格相同。

然后你使用:

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

現在所有組件都將以其首選大小顯示。


查看完整回答
反對 回復 2023-03-17
  • 1 回答
  • 0 關注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號