更改 awt 中的按钮背景颜色

2023-12-08

所以我有一个名为 Safe25 的 GUI 程序。基本上,如果您按正确的顺序按下按钮,即“15032018”,程序将自行关闭。 如果您输入正确的数字,假设您在开始时按 1,按钮应将其背景颜色更改为绿色,例如this:

如果按错按钮,按钮的颜色应更改为红色。

但我的代码逻辑与我的问题无关。 正如我所说,我想更改按钮背景颜色,如链接图像中所示。我的问题是它改变了框架的背景颜色,就像this

重要的一行是75,我评论了这一行。

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Safe25 extends Frame implements ActionListener {
    JButton[] buttons;

    Safe25() { // Konstruktor
        setSize(250, 300); 
        setLocation(300, 300);
        setTitle("Safe25"); 

        buttons = new JButton[10]; 
        for (int i = 0; i < 10; i++) { // 10 Knöpfe im Array
            buttons[i] = new JButton("" + i); 
            buttons[i].setFont(new Font("Courier", Font.BOLD, 34));
            buttons[i].addActionListener(this); // 
        }

        Panel panel0 = new Panel(); 
        panel0.setLayout(new GridLayout(1, 1)); 
        panel0.add(buttons[0]); 
        Panel panelRest = new Panel(); 
        panelRest.setLayout(new GridLayout(3, 3)); 
        setLayout(new GridLayout(2, 1)); 
        for (int i = 1; i < 10; i++) { 
            panelRest.add(buttons[i]); 
        }
        add(panel0); // Panel mit 0-Knopf
        add(panelRest); 
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent wv) {
                System.exit(0);
            }
        });
        setVisible(true);
    }

    int s = 0; 

    public void actionPerformed(ActionEvent evt) {
        // 0 1 2 3 4 5 6 7 8 Zustände ...
        // 1-5-0-3-2-0-1-8 ist richtige Kombination
        switch (Integer.parseInt(evt.getActionCommand())) {
        case 0:
            s = (s == 2 || s == 5) ? s + 1 : 0;
            break;
        case 1:
            s = (s == 0 || s == 6) ? s + 1 : 1;
            break;
        case 2:
            s = (s == 4) ? s + 1 : 0;
            break;
        case 3:
            s = (s == 3) ? s + 1 : 0;
            break;
        case 5:
            s = (s == 1) ? s + 1 : s == 7 ? 2 : 0;
            break;
        case 8:
            s = (s == 7) ? s + 1 : 0;
            break;
        default:
            s = 0;
        }
        Color col;
        if (s == 0) { 
            col = Color.red;
        } else { // richtiger Weg
            col = Color.green;
        }
        if (s == 8) { 
            System.exit(0);
        }
        for (Component c : getComponents()) // line 75, i want this one
            c.setBackground(col); // to change the buttons backgroundcolor
        repaint(); // but it changes the frames backgroundcolor instead
    }

    public static void main(String[] args) {
        Safe25 we = new Safe25();
    }
}

你红色了吗javadoc对于 JButton?

edit:

抱歉,我很快就查看了您的代码。您现在要做的就是设置当前容器中每个组件的背景颜色。 虽然您的按钮数组是全局的,但您可以简单地再次循环该集合以获取正确的组件“按钮”并设置背景颜色,如下所示:

        for (JButton b : buttons) // line 75, i want this one
           b.setBackground(col); // to change the buttons backgroundcolor
        repaint(); // but it changes the frames backgroundcolor instead
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 awt 中的按钮背景颜色 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其

随机推荐

  • 在 Saxon 9 中,Java XML 解析器无法识别正则表达式中的单词边界 (\b)

    我有以下简单的正则表达式 b w b 撒克逊报告以下错误 syntax error at char 2 in regular expression Escape character b not allowed 这是否意味着我不能在 Java
  • 在 AngularJS 模块中包装 javascript 类并注入 Angular 服务的正确方法

    在我正在开发的 AngularJS 模块中 我有一个Canvas类定义为 angular module myModule factory Canvas function return Canvas var Canvas function e
  • SendInput 和 64 位

    下面是我用来通过 SendInput API 模拟按键的一些代码的摘录 如果我将应用程序设置为针对 x86 CPU 编译 则此方法可以正常工作 但不适用于 x64 CPU 编译 我猜这与 x64 使用双倍大小指针有关 但我试图改变这一点 F
  • Angular.js 路由不适用于 WAMP

    我正在致力于设置一个使用 Express Node mySQL 堆栈构建的 Angular js 单页应用程序 我为路线设置了以下代码 angular module myApp myApp filters myApp services my
  • PHP header() 函数没有重定向[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在使用以下 PHP 代码来检查会话 但是 如果会话未登录 则页面不会重定向 仅显示黑
  • jar 中的类路径资源

    我有一个项目A 其中包含一些java文件和一个类路径资源R txt 在项目中我使用 ClassLoader getSystemResource R txt 检索 R txt 然后我有一个项目 B 其中包含项目 A 的 jar 文件 现在 g
  • 多个线程可以同时向并发集合添加项目吗?

    我正在尝试找出 C 中的并发集合 ConcurrentBag ConcurrentDictionary 和 ConcurrentQueue 多个线程是否可以向其中添加项目EXACTLY同时 还是他们一前一后地等待 我试图检查他们的源代码 但
  • DialogFragment 中的 ActionBar

    在我的 Galaxy Tab 10 1 上的日历应用程序中 创建新事件时 标题栏 操作栏区域中会出现一个对话框 其中包含 完成 和 取消 按钮 我想在我的应用程序中实现这一点 我尝试过使用setHasOptionsMenu true 除了覆
  • Android 无尽适配器

    我正在使用无尽适配器http github com commonsguy cwac endless但是每当我返回 false 因为我没有更多的数据要附加 如此处所述http github com commonsguy cwac endles
  • 插入由触发器生成但未传递的 ID 字段

    在 MySQL 中 我有一个触发器 BEGIN IF EXISTS SELECT FROM devices WHERE device id NEW device id THEN SET NEW id NULL ELSE INSERT INT
  • 如何在 R 中对条形图的订单数据进行“分组”?

    我正在研究生物信息学 我需要输出一个包含祖先结果的图表 条形图 通常 这些图表是通过将人群分组在一起来绘制的 完成的方法是 您只需绘制不同假定人群 此处为 4 的 Q 分数 下面的数据 的条形图 问题是我使用ord tbl order tb
  • 如何在 AppleScriptObjC 中使用 NSAutoreleasePool

    我想知道如何从后台函数停止另一个函数 另外 我必须排空 NSAutoreleasePool 但我不知道该怎么做 我认为如果我不释放池 这个应用程序有时会冻结 property i 0 property myLabel missing val
  • Nginx 和 PHP-cgi - 无法 file_get_contents 服务器上的任何网站

    我认为最好用代码来解释这一点 从网络目录 vi get php 将此 php 添加到 get php IPOFTHESERVER 是运行 nginx 和 PHP 的服务器的 IP php get php 返回该 IP 托管的 默认 网站的内
  • Mifare认证

    假设我想对 Mifare Classic 进行身份验证 我如何知道要发送到卡的 APDU 的确切类型 Example 这段代码 bcla 0xFF bins 0x86 bp1 0x0 bp2 0x0 currentBlock len 0x5
  • 使用 RouteExistingFiles 阻止对现有文件的访问,即使不存在路由

    在 ASP net MVC 2 中 我可以使用routes RouteExistingFiles true 通过路由系统发送所有请求 即使它们存在于文件系统上 通常 这最终会击中 controller action id 路由并抛出异常 因
  • TabActivity 与嵌入 Activity 之间的通信

    我试图找出 TabActivity 和此 TabActivity 中嵌入的子活动之间通信的最佳实践 在我的 TabActivity 中 有一个按钮 单击按钮时 我希望更新此 TabActivity 中嵌入的子活动 我编写了如下代码 只是想知
  • Thymeleaf 和 #fields.hasErrors

    我正在为学校做这项作业 使用 SpringMVC Hibernate JPA 和 Thymeleaf 下面的代码涉及一个名为 stringGrade 的特定属性 我想使用 Hibernate Validator 验证该字段中的输入 我似乎无
  • 选择查询中的 JDBCPreparedStatement 和参数(?)[重复]

    这个问题在这里已经有答案了 我与oracle数据库的连接如下 String selectSQL SELECT supplier name FROM supplier WHERE supplier id PreparedStatement p
  • ProgressBar 在阻塞的 UI 线程中更新

    为什么ProgressBar会在理论上阻塞的UI线程中更新 在简单的应用程序中 我有一个进度栏和一个标签 我在 UI 线程中运行一个耗时的方法 尝试更新 ProgressBar 和标签 这是not应该可以工作 因为 UI 线程被阻塞 但进度
  • 更改 awt 中的按钮背景颜色

    所以我有一个名为 Safe25 的 GUI 程序 基本上 如果您按正确的顺序按下按钮 即 15032018 程序将自行关闭 如果您输入正确的数字 假设您在开始时按 1 按钮应将其背景颜色更改为绿色 例如this 如果按错按钮 按钮的颜色应更