簡體   English   中英

如何在底部顯示一個按鈕,這對於jframe中的所有選項卡都是通用的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM