2011-11-07 3 views
4

데이터베이스를 관리하기 위해 Scala 프로그램을 작성 중이며 2 차원 ArrayBuffer로 모든 데이터를 그렸습니다. 행 0은 열 이름이고 후속 행에는 테이블의 각 항목에 대한 정보가 들어 있습니다. 이것을 테이블에 넣으려고 할 때, 열 머리글 할당에 대해 어떻게해야합니까?스칼라 테이블에서 열 이름을 구성하는 방법은 무엇입니까?

구문 제안은 크게 감사하겠습니다.

의사 코드 :

Data=ArrayBuffer() 
Data(0)={"Name","Birthday","ID"} 
Data(1)={"Bob", "07/19/1986", "2354"} 
Data(2)={"Sue", "05/07/1980", "2355"} 
Data(3)={"Joe", "08/12/1992", "2356"} 
Data(4)={"Jim", "11/20/1983", "2357"} 

나는 데이터 (0) 열 머리글을 설명하는 표에이를 데려 가고 싶다는, 그리고 이후의 행이 테이블의 행을 설명하는,하지만 난 방법을 알아낼 수 없습니다 행 헤더를 설정하십시오.

+0

이 질문에 정보를 추가해야 할 수도 있습니다. 나는 당신이하려고하는 것에 대한 의사 코드조차도 도움이 될 것이라고 생각합니다. – huynhjl

답변

0

당신이 스윙에 대해 이야기하고 있다고 가정 할 때, 화면을 스크롤 패널 안에 넣고 표시된 배열 버퍼를 기반으로 테이블 모델을 만들면 첫 번째 행은 기본적으로 열 이름으로 간주됩니다.

+0

테이블 모델을 설정하는 방법을 잘 모릅니다. 그렇게하는 것에 대한 나의 약한 시도는 Code-Not-Running 증후군을 많이 일으켰다. 2.8의 구문은 무엇입니까? \ n 지금은 테이블의 데이터를 업데이트하는 더 쉬운 방법을 찾을 수 없었기 때문에 단순히 for 루프의 셀을 업데이트하는 것이지만 여전히 "A", "B" , "C", "D"등이 내 열 머리글 – Museless

+0

의 경우 [this code] (https://github.com/asinghal/SlateIDE/blob/master/src/net/slate/gui/ResultsTabbedPane)를 참조하십시오. 스칼라). – aishwarya

3

테이블에 데이터를 입력하는 가장 쉬운 방법은 생성자를 사용하는 것입니다

new Table (rowData: Array[Array[Any]], columnNames: Seq[_]) 

여기에 약간 까다로운 것은 배열이 Array[String]아니라는 것을 의미한다 (Why doesn't the example compile, aka how does (co-, contra-, and in-) variance work? 참조) 공변 아니라는 것이다 하위 유형 Array[Any]입니다. 따라서 하나를 다른 것으로 바꾸는 방법이 필요합니다. map이 작업을 수행합니다.

또한 열 이름을 표시하려면 ScrollPane에 표를 놓아야합니다.

import swing._ 
import collection.mutable.ArrayBuffer 

object Demo extends SimpleSwingApplication { 

    val data = ArrayBuffer(
    Array("Name","Birthday","ID"), 
    Array("Bob", "07/19/1986", "2354"), 
    Array("Sue", "05/07/1980", "2355") 
) 

    def top = new MainFrame { 
    contents = new ScrollPane { 
     contents = new Table(
     data.tail.toArray map (_.toArray[Any]), 
     data.head 
    ) 
    } 
    } 
} 

당신에게 표를 줄 것이다 :

table

편집 : data.tail.toArray.asInstanceOf[Array[Array[Any]]], 매핑을보다 효율적입니다 : 당신은 또한 캐스트를 사용할 수 있습니다.

+0

그래서, 정확히 내가 원하는 것 같아요,하지만 배열 배열 대신 ArrayBuffers 배열을 사용하고 ... 나는 그 문제가 있는지 잘 모르겠지만 내 버퍼를 표시하려면 코드를 입력 할 때, 내가 이해할 수없는 ArrayIndexOutOfBounds 오류가 발생하고 그 코드에서 어떻게 그려지고 있는지 잘 모르겠습니다. 이것은 ArrayBuffers를 사용하고 있습니까? 아니면 다른 것을 놓치고 있습니까? – Museless

+0

@Museless 위의 코드는 ArrayBuffers와 마찬가지로 잘 작동 할 것입니다. ArrayBuffers의 요지는 확장 가능하다는 것이지만, 고정 된 수의 열에 대해서는 사용하지 않는 것입니다. 위의 코드가 범위를 벗어난 오류를 줄 수있는 방법은 없습니다. 예외가 발생하는 라인을 알려 주어야합니다. –

관련 문제