Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JScrollpane仅在最大化窗口Java Swing后可见_Java_Swing_Jtable_Jscrollpane_Maximize - Fatal编程技术网

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

JScrollpane仅在最大化窗口Java Swing后可见,java,swing,jtable,jscrollpane,maximize,Java,Swing,Jtable,Jscrollpane,Maximize,我使用JScrollPane将一些值放入JTable中,但是JScrollPane必须在用户单击按钮之前是不可见的。但是在我手动最大化窗口之前,JScrollPane仍然不可见。我几乎什么都试过了,.validate()。重新验证()。重新绘制()。。。我使用的是Netbeans,在JScrollPane的自定义代码中,我编写了以下代码: scrollPane = new javax.swing.JScrollPane(); this.scrollPane.setVisible(false);

我使用JScrollPane将一些值放入JTable中,但是JScrollPane必须在用户单击按钮之前是不可见的。但是在我手动最大化窗口之前,JScrollPane仍然不可见。我几乎什么都试过了,.validate()。重新验证()。重新绘制()。。。我使用的是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í
然后,在鼠标上:

private void botoGeneraLlistatMouseReleased(java.awt.event.MouseEvent evt) {
    this.generaLlistat();
}
在generaLlistat()的末尾:

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

您只需在调用
setVisible(true)
后在容器上调用
pack()
,您的滚动窗格就会出现。

尝试以下方法:

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

您可以使用,如图所示和,尽管它有一些与前面提到的相同的缺点。

如果您使用的是
jframe
,请尝试此编码

在构造函数方法中,给出

Jscrollpane.setVisible (false);
给出与
jframe
中的
jtable
关联的特定
jscrollpane

然后在actionperformed方法中给出

Jscrollpane. setvisible (true); 
pack (); 

这会有帮助的……

哦,很抱歉我没有礼貌,我当时真的很激动。谢谢:Dcalling pack()当然有效,这种方法的唯一缺点是UI将进入“还原”模式。如果您希望您的UI处于最大化模式,这会产生问题。使用“setExtendedState(最大化);”就在pack()之后。
Jscrollpane. setvisible (true); 
pack ();