- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要让 jbutton 将红色圆圈的颜色更改为绿色,很简单。但是每次按下按钮时颜色都会在红色和绿色之间变化,你是如何做到的呢?我可以让它改变颜色一次,但仅此而已。
这是我的面板:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class mypanel extends JPanel implements ActionListener {
JButton b;
Color c1, c2;
int x, y, z, q;
public mypanel() {
this.setVisible(true);
this.setBackground(Color.darkGray);
b = new JButton("change color");
add(b);
b.setBounds(110, 0, 30, 50);
b.addActionListener(this);
c1 = Color.green;
c2 = Color.red;
x = 80;
y = 130;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.requestFocus();
g.setColor(Color.black);
g.fillRect(110, 70, 60, 100);
g.setColor(c2);
g.fillOval(125, x, 30, 30);
}
public void actionPerformed(ActionEvent e) {
repaint();
if (e.getSource() == b) {
c2 = c1;
x = y;
}
}
}
最佳答案
您需要对代码进行多项更改:
Color
对象,用于存储当前Color
boolean
y
变量。我注意到的最重要的事情是你改变当前变量值的方式。但这使得不可能返回旧值,因为现在有两个引用指向同一个对象。
您应该解决这个问题,阅读引用或原始值。
注意:这可以简化,但为了清楚起见,我更喜欢添加更多步骤。这样就更容易理解了。
<小时/>public class mypanel extends JPanel implements ActionListener {
JButton b;
Color c1, c2, currentColor;
boolean isRed = true;
int x, z, q;
public mypanel() {
this.setVisible(true);
this.setBackground(Color.darkGray);
b = new JButton("change color");
add(b);
b.setBounds(110, 0, 30, 50);
b.addActionListener(this);
c1 = Color.green;
currentColor = c2 = Color.red;
x = 80;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.requestFocus();
g.setColor(Color.black);
g.fillRect(110, 70, 60, 100);
g.setColor(currentColor);
g.fillOval(125, x, 30, 30);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b) {
if (isRed){
currentColor = c1;
x = 130;
isRed = false;
} else {
currentColor = c2;
x = 80;
isRed = true;
}
}
repaint();
}
}
关于java - JButton 来回改变某物的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858124/
我正在编写两个程序,一个用 C++ 编写,另一个用 Python 编写,以使用 unix 域套接字相互通信。我想做的是让 C++ 代码向 Python 代码发送一个数字,Python 代码又将另一个数
我希望有一个生成器函数,它返回一条线上的点,给定一个最小距离 k。这很简单,可以使用 numpy 完成,如下所示: points = np.linspace(start, end, k) 但是,我想生
根据我的理解,我们一直在用 Git 做一个非常标准的分支模型的项目,描述如下:http://nvie.com/posts/a-successful-git-branching-model/ 我们从“m
我有一张图片,我想单击它以动画形式旋转 90 度,当它再次单击时我希望它以动画形式旋转 -90 度。 对于使用 css3 变换的旋转 im: -moz-transform:rotate(90deg);
我正在尝试将 拖放 Logo 到 2 个 SVG 圆圈 中。在我的代码的帮助下,图像被拖到一个圆圈中,但没有被拖到另一个圆圈中。 如何修改code这样图像可以在两个圆圈之间拖/放? function
我正在使用 python 3.5.2、pandas 0.18.1 和 sqlite3。 在我的数据库中,我有一个列 unix_time 和 INT 自 1970 年以来的秒数。理想情况下我想从 sql
我已经在我的服务器上安装了 SSL。我的问题是如何通过 acegi 插件在选定的 Controller /页面上强制使用 https。 Acegi 插件支持一个属性 forcehttps,当设置为 t
这是我第一次发布查询。我需要帮助。感谢您的帮助。 我同意我已经把我的概率作为一个长篇故事。但很抱歉,我不知道如何缩短它,我的目的是提供有关我的问题的完整信息。 问题:我必须在 Windows 平台上使
我是一名优秀的程序员,十分优秀!