我有一個JTabbedPane
,其標籤中包含三個表格。 JTabbedPane
,同樣在JScrollPane
。我想爲每個表顯示一個修訂表頭,它遵循架構{"Client", "Action", "Location", "Value"}
。當我試圖在ActionListener
中設置標題時(請參閱後面的內容),我可以自由地使用其他方法(例如,最初設置標題)。無法顯示選項卡式JTable的表格標題
其他SO帖子正在解決同樣的問題,但我無法獲得表頭顯示。唯一可行的是將數據添加到提到的ActionListener
中的表格中。我不明白爲什麼沒有顯示標題,因爲我將String
-matrix的數據連同表示標題的String
-數組一起傳遞。
起初,這裏是關於我的表的代碼片斷,它在GUI啓動時執行(我的initialize()
-method)。
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
tabbedPane.setFont(new Font("Carlito", Font.PLAIN, 13));
tabbedPane.setBackground(Color.WHITE);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
tableBefore = new JTable();
tabbedPane.addTab(descrTableBefore, null, tableBefore, null);
tableBefore.setFont(new Font("Carlito", Font.PLAIN, 13));
tableBefore.setFocusable(false);
tableMainTest = new JTable();
tabbedPane.addTab(descrTableMain, null, tableMainTest, null);
tabbedPane.setEnabledAt(1, true);
tableMainTest.setFont(new Font("Carlito", Font.PLAIN, 13));
tableMainTest.setFocusable(false);
tableAfter = new JTable();
tabbedPane.addTab(descrTableAfter, null, tableAfter, null);
tableAfter.setFont(new Font("Carlito", Font.PLAIN, 13));
tableAfter.setFocusable(false);
scrollTables = new JScrollPane();
scrollTables.setBounds(442, 11, 397, 490);
scrollTables.setViewportView(tabbedPane);
frmTestframework.getContentPane().add(scrollTables);
下面又是一個代碼段,但此時從提到ActionListener
,這是添加到一個按鈕,其將所述元件與JTable
。目前我正試圖讓它與一張表一起工作:tableMainTest
。所以,這就是我試圖定義表頭:
dataMatrixMain = new String[itemListMain.size()][];
for(int j = 0; j < itemListMain.size(); j++)
dataMatrixMain[j] = itemListMain.get(j);
modelMain = new DefaultTableModel(dataMatrixMain, header);
mainGUI.tableMainTest.setModel(modelMain);
header
是String
- 陣列與形式{"Client", "Action", "Location", "Value"}
itemListMain
是字符串數組dataMatrixMain
的名單是String
- 矩陣這將用於填充我的表與數據
有沒有人知道,什麼是必須陳ged使標題可見?
編輯:
當程序被啓動,用戶會看到我在下面的狀態表:
用戶只會看到三個選項卡,這表都是空的。
用內容填充表是用戶的工作。從JList
採摘的元素,並將其提交之後,該表被填充方式如下:
每個後從JList
提交所選元素的,它會被直接顯示在JTable
。我通過設置JTable
的DefaultTableModel
來做到這一點。因此,顯示輸入的元素像預期一樣工作。只有標題不顯示在條目上方。
編輯2:SSCCE
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.DefaultTableModel;
public class GUIMain{
private JFrame frmKeyoperateTestframework;
public JTable tableBefore;
public JTable tableMainTest;
public JTable tableAfter;
public JTabbedPane tabbedPane;
public JScrollPane scrollTables;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUIMain window = new GUIMain();
window.frmKeyoperateTestframework.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public GUIMain() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmKeyoperateTestframework = new JFrame();
frmKeyoperateTestframework.setResizable(false);
frmKeyoperateTestframework.getContentPane().setBackground(Color.WHITE);
frmKeyoperateTestframework.setFont(new Font("Carlito", Font.PLAIN, 14));
frmKeyoperateTestframework.setTitle("GUI");
frmKeyoperateTestframework.setBounds(100, 100, 865, 584);
frmKeyoperateTestframework.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmKeyoperateTestframework.getContentPane().setLayout(null);
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
tabbedPane.setFont(new Font("Carlito", Font.PLAIN, 13));
tabbedPane.setBackground(Color.WHITE);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
scrollTables = new JScrollPane();
scrollTables.setBounds(446, 50, 397, 490);
scrollTables.setViewportView(tabbedPane);
frmKeyoperateTestframework.getContentPane().add(scrollTables);
// "5" to show, that only data rows are displayed
DefaultTableModel tableModel = new DefaultTableModel(new String[]{"Client", "Action", "Location", "Value"}, 5);
tableBefore = new JTable();
tableBefore.setName("tableBefore");
tableBefore.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tableBefore.setModel(tableModel);
tabbedPane.addTab("Before", null, tableBefore, null);
tableBefore.setFont(new Font("Carlito", Font.PLAIN, 13));
tableBefore.setFocusable(false);
tableMainTest = new JTable();
tableMainTest.setName("tableMainTest");
tableMainTest.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tableMainTest.setFont(new Font("Carlito", Font.PLAIN, 13));
tableMainTest.setFocusable(false);
tableMainTest.setModel(tableModel);
tabbedPane.addTab("Main", null, tableMainTest, null);
tabbedPane.setEnabledAt(1, true);
tableAfter = new JTable();
tableAfter.setName("tableAfter");
tableAfter.setModel(tableModel);
tableAfter.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabbedPane.addTab("After", null, tableAfter, null);
tableAfter.setFont(new Font("Carlito", Font.PLAIN, 13));
tableAfter.setFocusable(false);
tabbedPane.setSelectedComponent(tableMainTest);
}
}
你能提供一個可運行的例子([SSCCE(HTTP:// sscce.org)),所以我可以重現你的問題,並嘗試修復它? –
@SergiyMedvynskyy我加了一個SSCCE。看到我更新的帖子。我知道,問題可能在於,表格不是直接在'JScrollPane'裏面,我已經試着移動它們,但是我再也看不到我的標籤了。 – KJaeg