我正在使用JScrollPane将JTable放入一些值,但是在用户点击按钮之前,JScrollPane必须是不可见的。但是在我手动最大化窗口之前,JScrollPane仍然不可见。我几乎尝试了所有的东西,.validate(); .revalidate(); .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();
}
我将不胜感激任何帮助:) 谢谢大家,对我的英语语法和拼写表示抱歉。
答案 0 :(得分: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();
}
}
答案 1 :(得分:1)
您可以在致电pack()
后致电容器上的setVisible(true)
并显示您的滚动窗格。
答案 2 :(得分:1)
您可以使用setPreferredScrollableViewportSize()
,如here和here所示,但它有一些与here相同的缺点。
答案 3 :(得分:-1)
如果您使用jframe
,请尝试此编码。
在构造函数方法中,给出
Jscrollpane.setVisible (false);
在jscrollpane
中提供与jtable
相关联的特定jframe
。
然后在actionperformed方法中给出
Jscrollpane. setvisible (true);
pack ();
这会有所帮助.....