正在创建Java GUI,但事件不会触发任何内容
我试图创建一个简单的GUI,其中按钮上显示的点击次数在每次点击后递增,因此每次点击后,每个按钮的颜色向右旋转一个值。此时,GUI已经创建,但是背景没有设置,当您单击任何东西时,都不会发生任何事情。我在这里似乎找不到问题。有人能看到吗 非常感谢您在这方面的帮助:)正在创建Java GUI,但事件不会触发任何内容,java,user-interface,Java,User Interface,我试图创建一个简单的GUI,其中按钮上显示的点击次数在每次点击后递增,因此每次点击后,每个按钮的颜色向右旋转一个值。此时,GUI已经创建,但是背景没有设置,当您单击任何东西时,都不会发生任何事情。我在这里似乎找不到问题。有人能看到吗 非常感谢您在这方面的帮助:) import java.awt.*; 导入javax.swing.*; 导入java.awt.event.*; 公共类ButtonJava扩展JButton实现ActionListener{ 私有静态int currentColor=0
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
公共类ButtonJava扩展JButton实现ActionListener{
私有静态int currentColor=0;
私人点击;
专用静态最终颜色[]颜色={
颜色,橙色,
颜色,白色,
Color.GREEN};
公共巴顿哈瓦(){
立根背景(颜色:黄色);
setText(“选择我”);
this.addActionListener(this);
}
公共静态void main(字符串[]args){
JFrame=新JFrame(“JFrame”);
JPanel面板=新的JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton按钮[]=新JButton[3];
对于(inti=0;i一个简单的错误-您不是在创建自定义按钮类,而是在使用JButton
更改以下行:
按钮[i]=新按钮(“选择我”);
致:
buttons[i]=new ButtonJava();
在main
中,您正在创建正常的JButton
并将它们添加到您的UI中,而我猜您的意思是添加ButtonJava
。应该是:
ButtonJava buttons[] = new ButtonJava[3];
for(int i = 0;i<buttons.length ; i++){
buttons[i] = new ButtonJava();
panel.add(buttons[i]);
}
ButtonJava按钮[]=新的ButtonJava[3];
对于(inti=0;iAh),我现在已经纠正了我最初的错误,但是我已经实现了对changecorders()的调用错误地说,它只是更改了一个按钮的颜色,而不是所有三个按钮的颜色。有人能帮忙吗?@user476033:每个ButtonJava
对象只能控制自己,这意味着当您单击其中一个按钮时,只有该按钮会更改颜色。如果您想单击其中一个按钮并更改所有按钮,请或者,您必须将其他按钮提供给每个按钮的构造函数,然后在其他每个按钮上调用changeColor
callsetBackground
。@安定:当您说“您必须将其他按钮提供给每个按钮的构造函数”时,你这是什么意思?我该怎么做?非常感谢你的帮助help@user476033:您需要一种从ButtonJava
内部引用其他按钮的方法。一种方法是让ButtonJava
构造函数获取JButton
列表(或ButtonJava
),然后在changeColor
中,您将迭代该按钮列表,并对每个按钮调用setBackground
。
ButtonJava buttons[] = new ButtonJava[3];
for(int i = 0;i<buttons.length ; i++){
buttons[i] = new ButtonJava();
panel.add(buttons[i]);
}