网格袋布局不显示任何东西!! JAVA

时间:2015-05-11 01:57:45

标签: java swing gridbaglayout

首先,我查看了stackoverflow,但我找不到与我的问题有关的任何内容。

我试图使用GridBagLayout,我第一次尝试它它正在运行,但我不知道我做了什么,现在它没有显示任何东西,你对mas的发生有什么想法?

下载所有代码:

package Instrucciones;

import java.awt.*;
import javax.swing.*;

/**
*
* @author Antonio
*/
public class JDialog1TxArea extends JDialog {

    JPanel panel = new JPanel(); //Contains all objects
    JTextArea instruc;
    JButton ok;

    public JDialog1TxArea(String instrucciones){  
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setTitle("Instrucciones");
        pack();
        setSize(450,300);
        setLocationRelativeTo(null);
        setVisible(true);

        JPanel mainpanel = new JPanel();
        getContentPane().add(mainpanel);

        panel = new JPanel();
        panel.setLayout(new GridBagLayout());
        mainpanel.add(panel);

        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 0;
        c.gridy = 0;
        c.anchor = GridBagConstraints.CENTER;

        instruc = new JTextArea(instrucciones);
        ok = new JButton("Aceptar");

        panel.add(instruc, c);
        c.gridy++;
        panel.add(ok, c);
        c.gridy++;   
    }  

    public static void main (String args[]){  
        JDialog1TxArea v = new JDialog1TxArea("Conalep");      
    }  
}

控制台没有任何例外。

1 个答案:

答案 0 :(得分:3)

setVisible移动到构造函数的最后一行

public JDialog1TxArea(String instrucciones) {

    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setTitle("Instrucciones");
    // From here
    //pack();
    //setSize(450, 300);
    //setLocationRelativeTo(null);
    //setVisible(true);

    JPanel mainpanel = new JPanel();
    getContentPane().add(mainpanel);

    panel = new JPanel();
    panel.setLayout(new GridBagLayout());
    mainpanel.add(panel);

    GridBagConstraints c = new GridBagConstraints();

    c.gridx = 0;
    c.gridy = 0;
    c.anchor = GridBagConstraints.CENTER;

    instruc = new JTextArea(instrucciones);
    ok = new JButton("Aceptar");

    panel.add(instruc, c);
    c.gridy++;
    panel.add(ok, c);
    c.gridy++;

    // To here
    pack();
    setLocationRelativeTo(null);
    setVisible(true);

}

我想不鼓励您从JDialog这样的顶级容器扩展,而是使用JPanel作为基础容器来设计您的UI。然后,您可以将这些容器添加到您想要的顶级容器中,甚至在您的情况下,使用JOptionPane之类的容器。有关详细信息,请参阅How to Make Dialogs

您可能还想查看How to Use Scroll Panes,因为JTextArea将从中受益