언어/JAVA

[JAVA] Swing JTable 컬럼이 보이지 않을 때 해결방법

기록원장 2025. 6. 2. 00:30
반응형
Java Swing에서 JTable을 Vector 방식으로 생성하면서 컬럼명을 지정했음에도, 실행 시 JTable의 컬럼이 화면에 나타나지 않는 현상에 관한 정리.

 

 

◆ 문제 현상


아래와 같은 코드로 JTable의 컬럼을 추가하고 설정했으나, 실제 실행 시 컬럼이 보이지 않는 현상이 발생함.

Vector<String> userColumn = new Vector<String>();
userColumn.addElement("순서");
userColumn.addElement("결과");
userColumn.addElement("문제 / 작성한 답");

DefaultTableModel model = new DefaultTableModel(userColumn, 0);
JTable resultTable = new JTable(model);
resultTable.setCellSelectionEnabled(true);
resultTable.setColumnSelectionAllowed(true);

// JScrollPane은 생성했지만 JTable을 넣지 않음
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(14, 217, 384, 165);

// JPanel에 JScrollPane 추가
JPanel contentPane = new JPanel();
contentPane.add(scrollPane);  // scrollPane에 테이블이 없으므로 화면에 보이지 않음

 

 

◆ 문제 원인


JTable은 JScrollPane 내부에서 사용하는 것이 일반적인 방식인데, JTable을 생성한 후 JTable을 JScrollPane 안에 추가하지 않은 게 원인이 되어, 컬럼과 데이터가 화면에 제대로 표시되지 않는 문제가 발생했었다.

 

 

◆ 해결 방안


JScrollPane 내부에 JTable을 추가하여 패널에 넣어줌.

JTable을 생성해도 그 테이블을 JScrollPane에 넣지 않거나, JScrollPane 자체를 JPanel에 추가하지 않으면 화면에 보이지 않기 때문에 Swing은 컴포넌트가 정확한 컨테이너에 포함되어야 제대로 렌더링 된다.

Vector<String> userColumn = new Vector<String>();
userColumn.addElement("순서");
userColumn.addElement("결과");
userColumn.addElement("문제 / 작성한 답");

DefaultTableModel model = new DefaultTableModel(userColumn, 0);
JTable resultTable = new JTable(model);
resultTable.setCellSelectionEnabled(true);
resultTable.setColumnSelectionAllowed(true);

// JTable을 JScrollPane에 포함시킴
JScrollPane scrollPane = new JScrollPane(resultTable);
scrollPane.setBounds(14, 217, 384, 165);

// JScrollPane을 패널에 포함시킴
JPanel contentPane = new JPanel();
contentPane.add(scrollPane);  // 이제 제대로 화면에 테이블이 출력됨

 

 

◆ 요약


  • JScrollPane에 JTable을 넣지 않으면 보이지 않는다.
  • JScrollPane을 화면에 올리려면 반드시 contentPane이나 JPanel에 추가해야 한다.
  • 컴포넌트가 정상적으로 보이지 않을 때는 부모 컨테이너에 잘 추가되었는지 확인해야 한다.

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형