문제

여기 Java 초보자. NetBeans 프로젝트에 추가 한 JFrame이 있으며 다음 방법을 추가하여 JTABLE을 만듭니다. 문제는 어떤 이유로이 방법을 호출 할 때 jtable이 표시되지 않는다는 것입니다. 제안이 있습니까?

public void showFromVectors(Vector colNames, Vector data) {     
    jt = new javax.swing.JTable(data, colNames);
    sp = new javax.swing.JScrollPane(jt);
    //NB: "this" refers to my class DBGridForm, which extends JFrame
    this.add(sp,java.awt.BorderLayout.CENTER);
    this.setSize(640,480);
}

이 방법은 다음 컨텍스트에서 호출됩니다.

DBGridForm gf = new DBGridForm(); //DBGridForm extends JFrame
DBReader.outMatchesTable(gf);
gf.setVisible(true);

... 여기서 dbreader.outmatchestable ()은 다음과 같이 정의됩니다

static public void outMatchesTable(DBGridForm gf) {
    DBReader ddb = new DBReader();
    ddb.readMatchesTable(null);
    gf.showFromVectors(ddb.lastRsltColNames, ddb.lastRsltData);
}

내 생각에 나는 내가 사용하는 스윙 클래스 또는 Java에 대해 무언가를 간과하고 있다는 것입니다. 어떤 아이디어?

도움이 되었습니까?

해결책

당신의 맥락에서 "이것"은 불분명합니다. 애플릿 안에 있습니까? JFrame?

레이아웃 문제가있을 수 있습니다. 새로운 BorderLayout을 사용하여 클래스에서 SetLayout을 호출했는지 확인하십시오.

스윙 애플리케이션에서는 버전에 따라 aw add () 대신 getRootContentPane (). add ()를 사용하려고합니다.

최상위 콘텐츠 추가에 대한 Java 자습서 : http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

다른 팁

이벤트 스레드에서 실행되지 않으면 문제가 될 수 있습니다. 그 물건이 표시되지 않는 것을 보았습니다.

이 코드가 AWT 이벤트에 응답하여 호출되면 (마우스 클릭, 버튼 프레스, ...) 문제가되지 않지만 앱을 시작한 것과 동일 하거나이 코드가 타이머를 실행중인 경우에는 여전히 문제가되지 않습니다. 아주 잘.

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