2012-08-31 2 views
2

JScrollPane을 사용하여 일부 값이있는 JTable을 삽입하지만 사용자가 버튼을 클릭 할 때까지 JScrollPane을 표시하지 않아야합니다. 그러나 JScrollPane은 윈도우를 수동으로 최대화 할 때까지 보이지 않습니다. 나는 거의 모든 것을 시도했다. validate(); .revalidate(); .repaint는() ... 내가 넷빈즈를 사용하고,과가 JScrollPane의 사용자 정의 코드에 내가 쓴했습니다의 mouseReleased에JScrollPane은 윈도우를 최대화 한 후에 만 ​​표시됩니다. Java Swing

scrollPane = new javax.swing.JScrollPane(); 
this.scrollPane.setVisible(false); 
// El código de los subcomponentes y del gestor de distribución - no se muestra aquí 

// El código que agrega el componente al contenedor superior - no se muestra aquí 

다음 :

private void botoGeneraLlistatMouseReleased(java.awt.event.MouseEvent evt) { 
    this.generaLlistat(); 
} 

그리고 결국에 generaLlistat()의 : 나는 어떤 도움 :) 감사합니다

public void generaLlistat(){{ 
    ...(Some code requesting data from DB) 
    JTable table = new JTable(rows, headings); 
    scrollPane.setViewportView(table); 
    this.scrollPane.setVisible(true); 
    statement.close(); 
    connection.close(); 
} 

는 여러분 모두 감사합니다, 내 영어 문법과 맞춤법에 대한 죄송합니다.

답변

2

시도 :

package stack; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class Aitor extends JFrame implements ActionListener{ 
    JTable table; 
    JPanel panel = new JPanel(); 
    JButton button = new JButton("Add"); 

    String data[][]={{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"},      {"hey","hey"},{"hey","hey"} 
,{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"},{"hey","hey"} 
,{"hey","hey"},{"hey","hey"}}; 
    String columns[] = {"First","Second"}; 

    public Aitor(){ 
     setLayout(new BorderLayout()); 
     panel.setLayout(new BorderLayout()); 
     panel.setPreferredSize(new Dimension(500,400)); 
     button.addActionListener(this); 
     add(panel,BorderLayout.CENTER); 
     add(button, BorderLayout.SOUTH); 

    } 

    public static void main(String [] a){ 
     Aitor aitor = new Aitor(); 
     aitor.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     aitor.pack(); 
     aitor.setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     panel.removeAll(); 
     table =new JTable(data,columns); 
     panel.add(new JScrollPane(table),BorderLayout.CENTER); 
     repaint(); 
     revalidate(); 
    } 
} 
+0

정말 괜찮 았는데 줘! : D –

+0

"감사합니다."1 개를 고맙게 생각합니다. :) –

+1

오, 내 예의가 부족한 것에 대해 유감스럽게 생각하며, 나는 그 순간 정말로 감정적이었습니다. 감사합니다 : D –

1

setVisible(true)을 호출 한 후 컨테이너에 pack()으로 전화하면 화면 이동 스크롤바가 나타납니다. 이런 식으로 일을

-1

jframe을 사용하는 경우이 코딩을 시도하십시오. 생성자 메서드에서

Jscrollpane.setVisible (false); 

jframejtable와 연관된 특정 jscrollpane을 부여 제공합니다.

다음의 actionPerformed 방법에

Jscrollpane. setvisible (true); 
pack(); 

그것은 도움이 될 것이다 .....

관련 문제