2

JScrollPane を使用して JTable 内にいくつかの値を入れていますが、ユーザーがボタンをクリックするまで JScrollPane を非表示にする必要があります。しかし、ウィンドウを手動で最大化するまで JScrollPane は表示されません。私はほとんどすべてを試しました.validate(); 。再検証(); .repaint()... 私は Netbeans を使用しており、JScrollPane のカスタム コードに次のように書いています。

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í

次に、MouseReleased で:

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();
}

助けていただければ幸いです:) 皆さん、ありがとうございます。私の英語の文法とスペルについて申し訳ありません。

4

4 に答える 4

3

このようにしてみてください:

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();
    }
}
于 2012-08-31T23:38:51.427 に答える
2

pack()呼び出した後にコンテナを呼び出すだけsetVisible(true)で、スクロールペインが表示されます。

于 2012-08-31T23:37:54.593 に答える
1

ここここsetPreferredScrollableViewportSize()に示されているように、 を使用できますが、ここで述べたのと同じ欠点がいくつかあります。

于 2012-08-31T23:57:29.093 に答える