Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
Java 设置joptionpane框上的大小_Java - Fatal编程技术网

Java 设置joptionpane框上的大小

Java 设置joptionpane框上的大小,java,Java,我有以下代码。我在joptionpane中的面板中添加了一个textArea,但框的框架太小,textArea不适合它。那么,我怎样才能放大joptionpane盒子呢 JPanel p = new JPanel(new BorderLayout(5,5)); JPanel labels = new JPanel(new GridLayout(0,1,2,2)); labels.add(new JLabel("Name", SwingConstants.

我有以下代码。我在joptionpane中的面板中添加了一个textArea,但框的框架太小,textArea不适合它。那么,我怎样才能放大joptionpane盒子呢

    JPanel p = new JPanel(new BorderLayout(5,5));

        JPanel labels = new JPanel(new GridLayout(0,1,2,2));
        labels.add(new JLabel("Name", SwingConstants.RIGHT));
        labels.add(new JLabel("Description", SwingConstants.RIGHT));
        p.add(labels, BorderLayout.WEST);


        JPanel controls = new JPanel(new GridLayout(0,1,4,4));
        JTextField name = new JTextField();
        controls.add(name);
        JTextArea description = new JTextArea();
   //     description.addAncestorListener(new RequestFocusListener(false));
        controls.add(description);
        p.add(controls, BorderLayout.CENTER);

        int result = JOptionPane.showConfirmDialog(null, p, "Create Atomic Action", JOptionPane.OK_CANCEL_OPTION);

        if(result == JOptionPane.OK_OPTION)
        {
           System.out.println("Yes press Name"+name.getText()+"  "+description.getText());
        }else
            System.out.println("Cancel press");

除了按照@dpassy的建议设置首选大小之外,我还添加了一个
ScrollPane
组件,这样您就可以添加更多的文本(比对话框上显示的更多)并向下滚动到底部。一、 另外,将布局从
GridLayout
更改为
BorderLayout
,这样
文本框就不会不必要地增长以填充空间

package test;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Test {

    public static void main(String[] args) {
        JPanel p = new JPanel(new BorderLayout(5, 5));

        JPanel labels = new JPanel(new BorderLayout());
        labels.add(new JLabel("Name", SwingConstants.RIGHT),BorderLayout.NORTH);
        labels.add(new JLabel("Description", SwingConstants.RIGHT), BorderLayout.CENTER);
        p.add(labels, BorderLayout.WEST);

        JPanel controls = new JPanel(new BorderLayout());
        JTextField name = new JTextField();
        controls.add(name, BorderLayout.NORTH);
        JTextArea description = new JTextArea();
        JScrollPane sp = new JScrollPane(description);
        // description.addAncestorListener(new RequestFocusListener(false));
        sp.setPreferredSize(new Dimension(400, 100));
        controls.add(sp, BorderLayout.CENTER);
        p.add(controls, BorderLayout.CENTER);

        JOptionPane.showConfirmDialog(null, p, "Create Atomic Action", JOptionPane.OK_CANCEL_OPTION);
    }
}
因此,它将显示以下对话框:

当您在
文本区域中添加文本时,它也会显示滚动条


尝试在TextArea上使用setPreferredSize方法你能发布一个吗?@Salman我指的是一个可以复制和粘贴的类,而无需添加额外代码使其可执行。