java - JScrollpane 仅在最大化窗口后可见 Java Swing

标签 java swing jtable jscrollpane maximize

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

在 genericLlistat() 的末尾:

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

我将不胜感激任何帮助:) 谢谢大家,对我的英语语法和拼写感到抱歉。

最佳答案

尝试这样做:

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

关于java - JScrollpane 仅在最大化窗口后可见 Java Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223564/

相关文章:

java - 与后端数据结构同步的 JTable 设计

java - 尝试将 jtable 中的数据显示到控制台时出现 ArrayIndexOutOfBoundsException 错误

java - 未发现 MVEL 脚本引擎

c# - 强制从内存中删除对象

java - 获取 Map 's value object' 字段的总和

java - 如何使用文本字段,以便将它们用作 RGB 颜色的输入来更改文本的颜色?

java - 根据数据库的值更改 JTable 行的颜色

java - 如何使用 poi 将 jtable 保存到 Excel(包括标题)?

java - 我们的加密 PDF 被黑了

java - eclipse :com. mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障