java中动态创建的JButton上的getLocation
好的,我用下面的代码在一个J面板上用一个空布局动态地制作了一行J按钮:java中动态创建的JButton上的getLocation,java,swing,dynamic,jbutton,null-layout-manager,Java,Swing,Dynamic,Jbutton,Null Layout Manager,好的,我用下面的代码在一个J面板上用一个空布局动态地制作了一行J按钮: int Y = 100; int X = 100; for(x=1, x<=20, x++){ button = new JButton(x); button.setLayout(null); button.setSize(100, 100); button.setLocation(X,Y); button.setVisible(true); panel.add(butt
int Y = 100;
int X = 100;
for(x=1, x<=20, x++){
button = new JButton(x);
button.setLayout(null);
button.setSize(100, 100);
button.setLocation(X,Y);
button.setVisible(true);
panel.add(button);
X += 100;
//action listener
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//should print out the location of the button that was clicked
System.out.println(button.getLocation());
}
});
}
inty=100;
int X=100;
对于(x=1,x每次运行循环时,按钮
变量都会被重新定义,因此当您最终调用actionPerformed
方法时,您正在读取最后一个按钮的数据。循环在任何事件发生之前完成,并保存了在按钮
变量中创建的最后一个按钮的引用
您需要从事件对象引用按钮
,因为它包含对作为事件源的按钮的引用:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//should print out the location of the button that was clicked
System.out.println( ((JButton)e.getSource()).getLocation() );
}
});
调用addActionListener
方法20次,但是actionPerformed
方法是异步调用的,并且仅在操作事件(例如:单击按钮)时调用发生。ActionEvent对象包含有关事件的信息,其中包括事件源,即您的按钮。每次运行循环时,按钮
变量都会被重新定义,因此当您最终调用actionPerformed
方法时,您正在读取最后一个按钮的数据。循环完成在任何事件发生之前,保存在按钮
变量中创建的最后一个按钮的引用
您需要从事件对象引用按钮
,因为它包含对作为事件源的按钮的引用:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//should print out the location of the button that was clicked
System.out.println( ((JButton)e.getSource()).getLocation() );
}
});
调用addActionListener
方法20次,但是actionPerformed
方法是异步调用的,并且仅在操作事件(例如:单击按钮)时调用发生。ActionEvent对象包含有关事件的信息,其中包括事件源,即您的按钮。每次运行循环时,按钮
变量都会被重新定义,因此当您最终调用actionPerformed
方法时,您正在读取最后一个按钮的数据。循环完成在任何事件发生之前,保存在按钮
变量中创建的最后一个按钮的引用
您需要从事件对象引用按钮
,因为它包含对作为事件源的按钮的引用:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//should print out the location of the button that was clicked
System.out.println( ((JButton)e.getSource()).getLocation() );
}
});
调用addActionListener
方法20次,但是actionPerformed
方法是异步调用的,并且仅在操作事件(例如:单击按钮)时调用发生。ActionEvent对象包含有关事件的信息,其中包括事件源,即您的按钮。每次运行循环时,按钮
变量都会被重新定义,因此当您最终调用actionPerformed
方法时,您正在读取最后一个按钮的数据。循环完成在任何事件发生之前,保存在按钮
变量中创建的最后一个按钮的引用
您需要从事件对象引用按钮
,因为它包含对作为事件源的按钮的引用:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//should print out the location of the button that was clicked
System.out.println( ((JButton)e.getSource()).getLocation() );
}
});
调用addActionListener
方法20次,但是actionPerformed
方法是异步调用的,并且仅在操作事件(例如:单击按钮)时调用发生。ActionEvent对象包含有关事件的信息,其中包括事件源,即您的按钮。Java GUI可能必须在多个平台、不同的屏幕分辨率和使用不同的PLAF上工作。因此,它们不利于组件的精确放置。要组织组件以进行obust GUI使用布局管理器,或者与布局填充和边框一起使用。Java GUI可能必须在多个平台、不同的屏幕分辨率和使用不同的PLAF上工作。因此,它们不利于组件的精确放置。要组织组件以获得强健的GUI,请使用布局管理器,或者使用.Java GUI的布局填充和边框可能需要在多个平台、不同的屏幕分辨率和使用不同的PLAF上工作。因此,它们不利于组件的精确放置。要组织组件以获得健壮的GUI,请使用布局管理器,或者使用.Java GUI的布局填充和边框migh不必在多个平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要组织组件以获得健壮的GUI,请使用布局管理器,或者使用布局填充和边框。