首先,我查看了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");
}
}
控制台没有任何例外。
答案 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
将从中受益