Java 更改单个JOptionPane大小

Java 更改单个JOptionPane大小,java,swing,layout,Java,Swing,Layout,我需要帮助更改文本字段的大小。我在面板的开头有一个JScrollPane(它很大,所以我可以读取更多数据),然后我有一个用于说明的JLabel,最后我想添加一个JTextArea,我只需要一行来输入数字。问题是面板中的元素相当大。 我附上结果: 这是我的密码: public static void delete() { int deletePosition; String[] options = {"Confirm", "Cancel"}; JPanel panel =

我需要帮助更改文本字段的大小。我在面板的开头有一个JScrollPane(它很大,所以我可以读取更多数据),然后我有一个用于说明的JLabel,最后我想添加一个JTextArea,我只需要一行来输入数字。问题是面板中的元素相当大。 我附上结果:

这是我的密码:

public static void delete()
{
    int deletePosition;
    String[] options = {"Confirm", "Cancel"};
    JPanel panel = new JPanel();

    JLabel label0 = new JLabel("Write the Position[#]:");
    JLabel labelJump1 = new JLabel("");
    JTextField txtDelete = new JTextField(1);
    GridLayout gridLayout = new GridLayout(0,1);
    panel.setLayout(gridLayout);

    String fullText = "";
    JTextArea textArea = new JTextArea(15,30);
        textArea.setText(fullText);
        textArea.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(textArea);

    panel.add(scrollPane);
    panel.add(label0);
    panel.add(labelJump1);
    panel.add(txtDelete);

    try
    {
        if (theEntityCollection.checkEmpty())
            JOptionPane.showMessageDialog(null, "The collection is EMPTY");
        else
        {
            for(int i = 0 ; i < theEntityCollection.getArraySize() ; i++)
            {

                fullText += "Position [" + (i+1) + "]\n\n" + theEntityCollection.getEntity(i);
                    if (i != theEntityCollection.getArraySize() - 1)
                        fullText += "_____________________\n\n"; 
                textArea.setText(fullText);
            }
            deletePosition = JOptionPane.showOptionDialog(null, panel, "ENTITY COLLECTION", JOptionPane.NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options , options[0]);
        }
    }
    catch(Exception e)
    {
        System.out.println("FAILED");
    }
    fullText = "";
}
publicstaticvoiddelete()
{
删除位置;
字符串[]选项={“确认”、“取消”};
JPanel面板=新的JPanel();
JLabel label0=新JLabel(“写入位置[#]:”;
JLabel labelJump1=新的JLabel(“”);
JTextField txtDelete=新的JTextField(1);
GridLayout=新的GridLayout(0,1);
panel.setLayout(网格布局);
字符串全文=”;
JTextArea textArea=新的JTextArea(15,30);
textArea.setText(全文);
textArea.setEditable(false);
JScrollPane scrollPane=新的JScrollPane(textArea);
panel.add(滚动窗格);
面板。添加(label0);
面板。添加(标签1);
面板。添加(txtDelete);
尝试
{
if(entitycollection.checkEmpty())
showMessageDialog(null,“集合为空”);
其他的
{
对于(int i=0;i
我必须说我对JavaGUI是新手


如果你能帮助我,我将不胜感激

GridLayout
正是它的设计初衷。它为每个组件提供完全相同的空间量,这些空间量根据可用空间均匀分布。您可能需要使用更灵活的布局管理器,例如

从改变开始

GridLayout gridLayout = new GridLayout(0,1);
panel.setLayout(gridLayout);
到像

GridBagLayout gridLayout = new GridBagLayout();
panel.setLayout(gridLayout);
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1;
gbc.anchor = GridBagConstraints.WEST;
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.insets = new Insets(2, 2, 2, 2);
然后改变

panel.add(scrollPane);
panel.add(label0);
panel.add(labelJump1);
panel.add(txtDelete);
更像是

panel.add(scrollPane, gbc);
panel.add(label0, gbc);
panel.add(labelJump1, gbc);
panel.add(txtDelete, gbc);

查看和了解更多详细信息

优秀的解决方案!非常感谢你。