JTabbedPane
의 탭에 3 개의 표가 있습니다. JTabbedPane
은 JScrollPane
입니다. 각 테이블에 대해 스키마 {"Client", "Action", "Location", "Value"}
을 따르는 수정 테이블 헤더를 보여주고 싶습니다. ActionListener
(나중에 참조)에 헤더를 설정하려고했지만 다른 방법 (예 : 헤더를 처음에 설정)은 무료입니다.탭이있는 JTable의 표 머리글을 표시 할 수 없습니다.
다른 SO 게시물은 동일한 문제를 다루고 있지만 테이블 헤더를 표시 할 수 없습니다. 작동중인 유일한 것은 언급 된 ActionListener
의 테이블에 데이터를 추가하는 것입니다. 헤더를 나타내는 String
배열과 함께 String
-matrix 형식으로 데이터를 전달할 때 헤더가 표시되지 않는 이유는 알 수 없습니다.
처음에는 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);
은 다시 코드이지만 JTable
에 요소를 추가하는 버튼에 첨가 언급 ActionListener
에서 이번에. 현재 나는 하나의 테이블로 작동하도록 노력하고 있습니다 : tableMainTest
. 문자열 배열
dataMatrixMain
의 목록은 String
-matrix는 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
양식{"Client", "Action", "Location", "Value"}
itemListMain
와String
-array 임 : 그래서 내가 테이블 헤더를 정의하려고 방법 내 테이블에 데이터를 채우기 위해 사용됩니다.
아무도 알고 있나요? 헤더를 보이게하려면?
편집 :
프로그램이 다음과 같은 상태에서 내 테이블을 볼 수 있습니다 사용자를 시작:
사용자는 단순히 테이블이 모두 비어있는 세 개의 탭을 볼 수 있습니다.
콘텐츠로 테이블을 채우는 것은 사용자 작업입니다. 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 실행 가능한 예제를 제공 할 수 있습니다 : 당신이 아래
가
JTabbedPane
의 조합하는JScrollPane
및JTables
일을 같이하는 방법 코드 예제를 찾을 수 있습니다 // sscce.org)), 그래서 당신의 문제를 재현하고 그것을 고칠 수 있습니까? –@SergiyMedvynskyy SSCCE를 추가했습니다. 내 업데이트 된 게시물을 참조하십시오. 그 문제는 테이블이'JScrollPane'의 내부에 직접 있지 않고 이미 이동하려고 시도했지만 다음으로는 더 이상 내 탭을 볼 수 없다는 것을 알 수 있습니다. – KJaeg