문제

나는 만들려고 노력하고있다 JTable 열 스팬이 있습니다. 구체적으로, 나는 둥지를 찾고있다 JTable 다른 내부 JTable, 그리고 사용자가 중첩 테이블을 보려면 클릭하면 아래 줄을 아래로 밀고 빈 공간을 채워야합니다. 이것은 테이블을 중첩 할 수있는 MS Access에서 볼 수있는 것과 유사하며 행의 확장 버튼을 클릭하면 중첩 테이블의 해당 항목이 표시됩니다.

누군가가 열 범위를 수행하는 방법을 알고 있다면 JTable, 당신은 나를 올바른 방향으로 가리키길 바랍니다. 또는 대안적인 방법을 알고 있다면 제안에 열려 있습니다. 응용 프로그램은 스윙으로 구축되고 있습니다. 테이블의 요소 인 높은 수준과 낮은 수준은 모든 솔루션에서 편집 할 수 있어야합니다. 중첩 사용 JTables 이것은 문제가되지 않으며 다른 솔루션은 이것을 고려해야합니다.

도움이 되었습니까?

해결책

올바른 방향으로 포인터로 시도하십시오 이 기사 Swingwiki에서는 열의 테이블 루이 방법을 잘 설명합니다. 그 전에는 또한 Tablecellrenderer 페인트 방법을 크게 성공하지 못한 것과 같은 몇 가지 대안을 시도했습니다.

다른 팁

마스터 테이블에 대한 자신의 TableUi를 작성해야합니다. 또한 행이 확장 된 경우와 같이 추가 데이터를 저장하기 위해 자신의 Tablemodel을 사용하는 것이 도움이 될 수 있습니다. 그러나 이것은 선택 사항입니다.

나는 행을 확장하고 텍스트 편집기를 보여주는 평등 테이블 루이를 씁니다. TableUI에서는 테이블로 동적으로 행을 동적으로 변경해야합니다. 또한 개인 물건에 액세스 할 수 없기 때문에 BasetableUi에서 일부 물건을 복사해야합니다.

Code-Guru의 코드를 기반으로합니다.

/*
 *  (swing1.1beta3)
 * 
 * |-----------------------------------------------------|
 * |   1st  |      2nd    |      3rd         |
 * |-----------------------------------------------------|
 * |    |    |    |    |        |        |
 */
//package jp.gr.java_conf.tame.swing.examples;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

import jp.gr.java_conf.tame.swing.table.*;

/**
 * @version 1.0 11/09/98
 */
public class MultiWidthHeaderExample extends JFrame {

  MultiWidthHeaderExample() {
    super( "Multi-Width Header Example" );

    DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(new Object[][]{
      {"a","b","c","d","e","f"},
      {"A","B","C","D","E","F"}},
    new Object[]{"1 st","","","","",""});

    JTable table = new JTable( dm ) {
      protected JTableHeader createDefaultTableHeader() {
        return new GroupableTableHeader(columnModel);
      }
    };
    TableColumnModel cm = table.getColumnModel();
    ColumnGroup g_2nd = new ColumnGroup("2 nd");
    g_2nd.add(cm.getColumn(1));
    g_2nd.add(cm.getColumn(2));
    ColumnGroup g_3rd = new ColumnGroup("3 rd");
    g_3rd.add(cm.getColumn(3));
    g_3rd.add(cm.getColumn(4));
    g_3rd.add(cm.getColumn(5));
    GroupableTableHeader header = (GroupableTableHeader)table.getTableHeader();
    header.addColumnGroup(g_2nd);
    header.addColumnGroup(g_3rd);
    JScrollPane scroll = new JScrollPane( table );
    getContentPane().add( scroll );
    setSize( 400, 100 );  
    header.revalidate(); 
  }

  public static void main(String[] args) {
    MultiWidthHeaderExample frame = new MultiWidthHeaderExample();
    frame.addWindowListener( new WindowAdapter() {
      public void windowClosing( WindowEvent e ) {
        System.exit(0);
      }
    });
    frame.setVisible(true);
  }
}

원천: http://www.codeguru.com/java/articles/125.shtml (2012 년 이후에 사용할 수 없습니다. 지금 참조하십시오 웹 아카이브)

기타 ressources :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top