java边界布局的一个例子,求发现错在哪儿?

packagecom.abc;importjava.awt.*;importjava.awt.event.ActionEvent;publicclassBorderLay... package com.abc;
import java.awt.*;
import java.awt.event.ActionEvent;
public class BorderLayoutDemo extends Frame
{
private final String names[]={"Hide North","Hide South","Hide East","Hide West","Hide Center"};
private final String locations[]={BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.EAST,BorderLayout.WEST,BorderLayout.CENTER};
private Button[] buttons=new Button[5];
public BorderLayoutDemo(String title)
{
super(title);
final BorderLayout layout=(BorderLayout)this.getLayout();
int i;
ActionListener listener=new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
for(int i=1;i<buttons;i++)
if(event.getSource()==buttons[i])
buttons[i].setVisible(false);
else
buttons[i].setVisible(true);
layout.layoutContainer(BorderLayoutDemo.this);
}
};
for(int i=0;i<buttons;i++)
{
buttons[i]=new Button(names[i]);
buttons[i].addActionListener(listener);
add(buttons[i],locations[i]);
}
setSize(250,250);
setVisible(true);
}
public static void main(String[] args)
{
new BorderLayoutDemo("Hello");
}

}
展开
 我来答
kevintop3
2013-09-30 · TA获得超过1.5万个赞
知道小有建树答主
回答量:890
采纳率:100%
帮助的人:536万
展开全部

// buttons是数组,取它的长度要用 buttons.length

// i这个变量已经在前面定义了。 在这里直接赋值使用就OK,不要再定义。


正确的代码:

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class BorderLayoutDemo extends Frame {
private final String names[] = { "Hide North", "Hide South", "Hide East",
"Hide West", "Hide Center" };
private final String locations[] = { BorderLayout.NORTH,
BorderLayout.SOUTH, BorderLayout.EAST, BorderLayout.WEST,
BorderLayout.CENTER };
private Button[] buttons = new Button[5];

public BorderLayoutDemo(String title) {
super(title);
final BorderLayout layout = (BorderLayout) this.getLayout();
int i;
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
// buttons是数组,取它的长度要用 buttons.length
for (int i = 1; i < buttons.length; i++)
if (event.getSource() == buttons[i])
buttons[i].setVisible(false);
else
buttons[i].setVisible(true);
layout.layoutContainer(BorderLayoutDemo.this);
}
};
// buttons是数组,取它的长度要用 buttons.length
// i这个变量已经在前面定义了。 在这里直接赋值使用就OK,不要再定义。
for (i = 0; i < buttons.length; i++) {
buttons[i] = new Button(names[i]);
buttons[i].addActionListener(listener);
add(buttons[i], locations[i]);
}
setSize(250, 250);
setVisible(true);
}

public static void main(String[] args) {
new BorderLayoutDemo("Hello");
}

}
追问
谢谢
KennyCkx
2013-09-30
知道答主
回答量:1
采纳率:0%
帮助的人:1456
展开全部
1、for(int i=0;i<buttons;i++)//应该改为for(int i=0;i<buttons.length;i++)
2、第二个for循环内变量i与第一个for循环内变量i有冲突,将其中一个重命名一下
追问
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式