웨어 하우스의 데이터베이스와 상호 작용할 GUI 인터페이스를 만들고 있습니다. 응용 프로그램은 항목을 데이터베이스에 추가하고 업데이트하고 표시해야합니다. 데이터베이스에 테이블이 있고 각 테이블에 대해 JPanel을 만들어 카드 레이아웃에 넣으므로 JMenu 항목으로 탐색 할 수 있습니다. 각 JPanel은 동일한 양식을가집니다. 맨 위에는 텍스트 필드, 콤보 상자 등이있는 상자가있어 테이블에 항목을 추가합니다. 상자 아래에 1 행이있는 JTable이 있고 그 아래에 JScrollPane에있는 JTable이있어 테이블의 내용을 표시합니다. 각 열은 마지막 너비 (너비 = 100, 수정을 위해 JButton을 포함)를 제외하고 너비가 150이어야합니다. 첫 번째 JTable을 필터로 사용합니다 (예 : 첫 번째 열에 '1'이 포함 된 경우 두 번째 JTable은 '1'로 시작하는 ID가있는 항목 만 표시 함). 다른 JPanels에 대한 정확한 레이아웃을 선택하는 방법을 모르겠습니다. 잠시 동안 각 JPanel에는 BorderLayout이 있고 각 구성 요소는 가운데에 배치됩니다. 그러나 문제는 각 열의 너비를 선택할 수 없다는 것입니다.JTable 너비 레이아웃
0
A
답변
0
글쎄, 마침내 나는 내 자신의 문제를 해결했습니다. 사실 JTable을 JPanel에, JPanel을 JScrollPane에 넣어야합니다. 여기에 코드가 있습니다 :
public class Brouillon extends JFrame {
public Brouillon() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jpContent = new JPanel();
JPanel jpCards = new JPanel();
jpContent.setLayout(new BoxLayout(jpContent, BoxLayout.PAGE_AXIS));
CardLayout clSelect = new CardLayout();
jpCards.setLayout(clSelect);
JButton jbTest = new JButton();
jbTest.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
clSelect.next(jpCards);
}
});
jpContent.add(jbTest);
JPanel jpContainer1 = new JPanel();
JTable jtData1 = new JTable(new Object[2][3], new String[] {"1", "2", "3"});
jtData1.getColumnModel().getColumn(0).setPreferredWidth(150);
jtData1.getColumnModel().getColumn(1).setPreferredWidth(150);
jtData1.getColumnModel().getColumn(2).setPreferredWidth(50);
JPanel jpTemp1 = new JPanel();
jpTemp1.setLayout(new BorderLayout());
jpTemp1.add(jtData1.getTableHeader(), BorderLayout.NORTH);
jpTemp1.add(jtData1, BorderLayout.CENTER);
JScrollPane jspData1 = new JScrollPane(jpTemp1);
jpContainer1.add(jspData1);
JPanel jpContainer2 = new JPanel();
JTable jtData2 = new JTable(new Object[2][7], new String[] {"1", "2", "3", "4", "5", "6", "7"});
jtData2.getColumnModel().getColumn(0).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(1).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(2).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(3).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(4).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(5).setPreferredWidth(150);
jtData2.getColumnModel().getColumn(6).setPreferredWidth(50);
JPanel jpTemp2 = new JPanel();
jpTemp2.setLayout(new BorderLayout());
jpTemp2.add(jtData2, BorderLayout.CENTER);
jpTemp2.add(jtData2.getTableHeader(), BorderLayout.NORTH);
JScrollPane jspData2 = new JScrollPane(jpTemp2);
jpContainer2.add(jspData2);
jpCards.add(jpContainer2);
jpCards.add(jpContainer1);
jpContent.add(jpCards);
this.getContentPane().add(jpContent);
this.pack();
this.setVisible(true);
}
public static void main(String[] args) {
new Brouillon();
}
}
0
jTable의 경우 열 크기를 설정할 수 있습니다. 아마도 아래의 예가 도움이 될 수 있습니다. 이것이 당신이 찾고있는 것이라면 알려주세요!
TableColumn column = null;
for (int i = 0; i < 3; i++) {
column = table.getColumnModel().getColumn(i);
if (i == 2) {
column.setPreferredWidth(100); //sport column is bigger
} else {
column.setPreferredWidth(50);
}
}
나는 또한 그것을 사용했습니다. 그러나 스크롤 창에 테이블을 넣으면 효과가 나타나지 않습니다. 그리고 테두리 레이아웃의 중심에 놓으면, jframe의 장소. – ardayigit
이 게시물을 확인해 주시겠습니까? http://stackoverflow.com/questions/953972/java-jtable-setting-column-width – Sirsendu
내 문제를 해결하지 못합니다 ... – ardayigit