[英]How to show a button at the bottom which is common for all tabs in jframe
我需要一個jframe中的jbutton,這對所有標簽都很常見。
我嘗試將相同的jbutton添加到3個選項卡,但該按鈕僅在最后添加的選項卡中可見。
這是我完整的獨立代碼。如果您運行此代碼,您將完全了解我的問題。
final JTabbedPane tabs = new JTabbedPane();
JButton jbutton ;
JTable table; // Table 1 in 1st tab
JTable databaseTable; // Table 2 in 2nd tab
JTable serverDetailsTable; // Table 3 in 3rd tab
JFrame frame = new JFrame();
table = new JTable();
final boolean[] canEdit = new boolean [] {
false, true, true
};
String [] columnNames = {
"col1", "col2", "col3"};
Object[][] mappedDeploymentData=
{
{" ", "", ""},
{" ", "", ""}
};
DefaultTableModel tableModel = new DefaultTableModel(mappedDeploymentData, columnNames)
{
public boolean isCellEditable(int row, int column) {
return canEdit[column];
}
};
table.setModel(tableModel);
table.setModel(tableModel);
JScrollPane scrollPane = new JScrollPane(table);
jbutton = new JButton(" Start "); //Button i want for all tabs in a frame
jbutton.setBackground(Color.BLACK);
jbutton.setForeground(Color.YELLOW);
jbutton.setEnabled(true);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(scrollPane);
panel.add(jbutton,BorderLayout.SOUTH);
table.getTableHeader().setReorderingAllowed(false);
tabs.add("Tab1", panel);
databaseTable = new JTable();
final boolean[] canEdit1 = new boolean [] {
false, false, true,true
};
String [] databaseColumns = {
"col1", "col2","col3"};
Object[][] mappedDatabaseData= {
{" ", "", ""},
{" ", "", ""}
};
DefaultTableModel mappedDatabaseTablemodel = new DefaultTableModel(mappedDatabaseData, databaseColumns)
{
public boolean isCellEditable(int row, int column) {
return canEdit1[column];
}
};
databaseTable.setModel(mappedDatabaseTablemodel);
JScrollPane databaseScrollPane = new JScrollPane(databaseTable);
JPanel databasePanel = new JPanel();
databasePanel.setLayout(new BorderLayout());
databasePanel.add(databaseScrollPane);
databaseTable.getTableHeader().setReorderingAllowed(false);
tabs.add("Tab2", databasePanel);
serverDetailsTable = new JTable();
final boolean[] canEdit2 = new boolean [] {
false, true
};
String [] server = {
" col1", " col2"};
Object[][] serverDeatils=
{
{"",""},
{"",""}
};
DefaultTableModel serverDatabaseTablemodel = new DefaultTableModel(serverDeatils, server)
{
public boolean isCellEditable(int row, int column) {
return canEdit2[column];
}
};
serverDetailsTable.setModel(serverDatabaseTablemodel);
JScrollPane serverScrollPane = new JScrollPane(serverDetailsTable);
serverScrollPane.setVisible(true);
JPanel serverPanel = new JPanel();
serverPanel.setLayout(new BorderLayout());
serverPanel.add(serverScrollPane);
serverDetailsTable.setTableHeader(null);
tabs.add("Tab3", serverPanel);
frame.setContentPane(tabs);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setTitle("Frame");
frame.pack();
frame.setSize(900, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
如果您運行上述獨立程序,您可以在第一個選項卡中看到我需要在所有選項卡中顯示的相同按鈕。
您只是將按鈕添加到第一個選項卡。
考慮創建一個主面板,它將是框架的內容窗格,然后將tabbedpane和按鈕添加到它:
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(tabs, BorderLayout.CENTER);
mainPanel.add(jbutton, BorderLayout.SOUTH);
frame.setContentPane(mainPanel);
同時刪除以下行,因為您不想將按鈕添加到一個特定選項卡:
panel.add(jbutton, BorderLayout.SOUTH);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.