无法使用java.awt调整按钮的大小

时间:2010-12-21 16:50:08

标签: java awt

这是我的代码:

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 个答案:

答案 0 :(得分:1)

尝试设置按钮的最小和最大尺寸。您正在使用的布局管理器可能无法遵循首选大小。

答案 1 :(得分:1)

对于按钮面板,您指定了GridLayout,忽略了首选大小。作为替代方案,您可以使用GridBagLayoutMigLayout,它们可以跨列。

附录:请注意,您可以在GridLayout中指明任意数量的行列。在您的示例中,这将表示具有所需行数的三列:

this.p1.setLayout(new GridLayout(0, 3));