Невозможно изменить размер кнопки, используя java.awt - PullRequest
0 голосов
/ 21 декабря 2010

это мой код:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Maapp extends Applet implements ActionListener
{
    private int flag=0;
    Panel p1=new Panel();
    Panel p2=new Panel();
    Button[] arr=new Button[12];

    TextField textf=new TextField("",25);
    public void init()
    {
        this.setLayout(new BorderLayout());
        this.p2.setBackground(Color.DARK_GRAY);
        this.p2.setLayout(new GridLayout(2,30));
        textf.setBackground(Color.BLACK);
        textf.setForeground(Color.YELLOW);
        this.p1.setLayout(new GridLayout(4,10));
        p2.add(textf);
        for(int i=0; i<10 ;i++)
        {

            arr[i]=new Button(""+i);
            arr[i].setForeground(Color.WHITE);
            arr[i].setBackground(Color.DARK_GRAY);
            p1.add(arr[i]);
            this.arr[i].addActionListener(this);
        }
            arr[10]=new Button("=");
            p1.add(arr[10]);
            arr[10].setPreferredSize(new Dimension(20,40));
            this.arr[10].addActionListener(this);


        this.add(p2,BorderLayout.NORTH);
        this.add(p1,BorderLayout.CENTER);
    }





    public void actionPerformed(ActionEvent arg0)
    {

        for(int i=0;i<10;i++)
        {
            if(arg0.getSource()==arr[i])
            {
                this.textf.setText(this.textf.getText()+i);
            }


        }
    }
}

Я хочу изменить размер одной из кнопок. Я пытался написать:

arr[10].setPreferredSize(new Dimension(20,40));

это не сработало. я пытался написать:

arr[10].resize(10,20);

это не сработало.

так, как я могу изменить размер кнопки arr[10]?

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

Для панели кнопок вы указали GridLayout, которая игнорирует предпочтительный размер. В качестве альтернативы вы можете использовать GridBagLayout или MigLayout, которые могут охватывать столбцы.

Добавление: обратите внимание, что вы можете указать произвольное количество строк или столбцов в GridLayout. В вашем примере это будет означать три столбца с таким количеством строк, сколько требуется:

this.p1.setLayout(new GridLayout(0, 3));
1 голос
/ 21 декабря 2010

Попробуйте установить минимальный и максимальный размер кнопки. Диспетчер макетов, который вы используете, может не соответствовать предпочтительному размеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...