关于多个按钮更改程序执行状态的实验

WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法 在 WPF 中按钮 Button 将会吃掉路由事件,此时的 EventTrigger 如果通过 RoutedEvent 是 MouseLeftButtonDown 那么将会拿不到路由事件,也就触发不了,因此样式将不会变更。简单的解决方法就是通过 VisualStateManager 配合 VisualState 来实现 实现效果如下,所有代码都是 XAML 代码 实现方式为给 Butto... 阅读详情

本来我写了界面,每个按钮的监听事件里写了好多代码,然后执行的时候按下按钮对对象进行操作。本来想法是一个按钮执行对象的具体流程,然后我们在另一个按钮里设置一个状态标识。这样,我们想改变程序状态时,只要按下改变程序状态的按钮就行了。但是,事实上这样行不通。在windowsbuilder建立的窗口上,我们的监听事件是建立在一个EventQueue.invokeLater  run()上的建立的线程上的,我们的把对象执行流程主题放在一个监听按钮上时,我们其他的按钮根本就不能执行。出现锁死状态,也就是说,我们这样的设计根本实现不了对象执行的多状态,反而在对象执行过程中锁死一个按钮,导致他根本没用。

     刚开始我也是一直想怎样用多线程实现这个状态变化,终于明白了。我们要向实现状态变化,就不能让我们的对象在监听事件里一直执行。我们只有把主体的对象执行流,放在监听事件之外,这样才不会卡死其他按钮监听事件。也就是说,我们不能在按钮事件中实现太多的代码,尽量简化才行。如果这样的话,那我们就只把状态标识的赋值放到按钮监听事件中,这样就不会出现其他按钮卡死的状态。而我们的主体对象执行流,放在监听事件线程之外,循环检测状态标识运行。两个线程同时运行,不用担心死锁同步问题,因为我们就是要让程序在两个线程中同时读写。其实准确说是一个写,一个读。

开始我还想怎么设计个锁,后来发现没必要,好像锁了也不好同步。例子如下:

package loginjsonclient;


import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Testconsole {

    private JFrame frame;
    static int num=0;
    static String stat="";
    static JTextArea textArea;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Testconsole window = new Testconsole();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }    
            }
        });
        while(true){
            switch(stat)
            {
            case "add1":
                num++;
                stat="";
                break;
            case "add2":
                num++;
                num++;
                stat="";
                break;
            case "add3":
                num=num+3;
                stat="";
                break;
            default:
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            show(String.valueOf(num));
        }
    }

    /**
     * Create the application.
     */
    public Testconsole() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        JButton jbadd1 = new JButton("\u52A01");
        jbadd1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                stat="add1";
            }
        });
        jbadd1.setBounds(45, 28, 113, 27);
        frame.getContentPane().add(jbadd1);
        
        JButton jbadd2 = new JButton("\u52A02");
        jbadd2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                stat="add2";
            }
        });
        jbadd2.setBounds(45, 101, 113, 27);
        frame.getContentPane().add(jbadd2);
        
        JButton button = new JButton("\u52A03");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                stat="add3";
            }
        });
        button.setBounds(45, 178, 113, 27);
        frame.getContentPane().add(button);
        
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(207, 13, 211, 198);
        frame.getContentPane().add(scrollPane);
        
        textArea = new JTextArea();
        scrollPane.setViewportView(textArea);
    }
    public static void show(String str)
    {
        textArea.append(str);
        textArea.append("\r\n");
    }
}

unity Button按钮点击时改变按钮图片样式 unity Button按钮点击时改变按钮图片样式,共陆续更新了3种方法 阅读详情

相关推荐

Android按钮状态与颜色动态变化指南

在Android应用开发中,按钮(Button)是用户交互的基本元素之一。它允许用户通过点击来触发某些操作,比如提交表单或打开新的界面。Button是View类的子类,这使得它继承了所有基本的View特性,如设置文本、图标、大小和颜色等。Selector在Android开发中,状态选择器(Selector)通常通过XML文件来定义,这些文件位于项目的目录下。一个典型的Selector XML文件定义了不同状态下按钮所展现的视觉效果。XML文件的基本构成包括一个根节点<selector>

weixin_31620365的博客 1172

编写程序,如下所示。要求每单击一次按钮,窗口的背景颜色就随机改变一次。(颜色通过Color类自定义颜色值随机产生)

编写程序,如下所示。要求每单击一次按钮,窗口的背景颜色就随机改变一次。(颜色通过Color类自定义颜色值随机产生) 仅供学习 package day01; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Random; public class Text5 { publ...

weixin_45634936的博客 3679

GhidrAssist:AI驱动的逆向工程助手实战指南

逆向工程是分析软件内部工作原理、理解二进制代码逻辑的关键技术,广泛应用于软件安全、恶意代码分析和漏洞挖掘等领域。其核心原理在于通过反编译、控制流与数据流分析等手段,将机器码还原为可理解的高级语言表示。传统逆向分析高度依赖人工经验,面对海量代码时效率低下且易出错。随着大语言模型(LLM)技术的发展,其强大的代码理解与推理能力为自动化逆向分析提供了新的可能。通过将LLM与成熟的逆向工程框架(如Ghidra)相结合,可以构建智能辅助系统,实现代码意图的自动解释、变量/函数的智能重命名以及潜在漏洞模式的辅助识别,从

weixin_42547335的博客 596

小程序中textarea点击按钮事件

textarea 的 blur 事件会晚于页面上的 tap 事件,如果需要在 button 的点击事件获取 textarea,可以使用 form 的 bindsubmit。   &lt;view class="section"&gt; &lt;form bindsubmit="bindFormSubmit"&gt; &lt;textarea placeholder="form 中...

YUSIR 完美CODING世界 5979

RK3588 Ubuntu 20.04 编译 eglinfo 踩坑实录:从 Python 环境配置到 Mali 驱动调试

本文详细解析了在RK3588平台上使用Ubuntu 20.04编译eglinfo的全过程,包括Python环境配置、waf构建系统升级、Mali驱动调试等关键步骤。通过系统级软链接方案、驱动状态诊断和EGL环境验证技巧,帮助开发者快速解决常见问题,构建可靠的图形调试环境。

weixin_29158047的博客 374

【数字人实战】Windows系统下Fun-CosyVoice3-0.5B-2512本地部署的避坑指南与疑难解析

本文详细介绍了在Windows系统下本地部署Fun-CosyVoice3-0.5B-2512的避坑指南与疑难解析,包括Python环境准备、源码获取、依赖安装、模型下载与WebUI启动等关键步骤。特别针对Windows环境下的常见问题提供了实用解决方案,帮助开发者高效完成部署并充分利用其语音转换与多语言支持功能。

weixin_42521856的博客 375

wxpython 按钮控件如何实现运行和中断状态,wxpython:当我单击停止按钮时,是否可以停止正在运行的程序?...

我只是稍微修改了你的代码。我添加了一个线程来运行calculate方法,因此它不会阻塞主线程。在import wximport timeimport threadingclass Test(wx.Frame):def __init__(self, title):super().__init__(None, title=title)self.panel = wx.Panel(self)self.in...

weixin_35773916的博客 373

Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单网页抓取案例 import urllib.request; #载入urllib.request,用于获取页面html源代码 from pandas import Series; #载入series包 from pandas import DataFrame; #载入dataframe包 from bs4 impo

Data Proc 1万+

实用代码(一)

链接:http://www.cnblogs.com/over140/archive/2012/09/26/2611999.html

liu537192的专栏 527

利用autojs制作抢购支付宝消费劵的手机脚本

前期准备工作 1.打开支付宝,点击中间的抢消费券的广告 2.点击左上角,将抢购页面添加到首页 3.查看支付宝首页是否出现消费劵 . autojs代码 "auto"; functiontaskstart(){ sleep(1000); launchApp('支付宝'); toast("正在打开支付宝应用"); sleep(1000); varxf=textContains("消费").findOne().bounds(); ...

洛阳泰山的博客 1万+

lvgl 9虚拟键盘控件 (lv_keyboard) 使用指南

是 LittlevGL 提供的一个虚拟键盘控件,适用于在图形界面中输入文本。与按钮矩阵类似,虚拟键盘预定义了多个键位布局,支持多种模式和自定义键位映射,能够满足各种文本输入需求。通过与文本区域 (Text Area) 的结合,键盘能够自动将输入的字符传送到指定区域。控件是 LittlevGL 提供的强大虚拟键盘解决方案,适用于任何需要文本输入的界面。通过预定义的键盘模式、自定义键位映射和文本区域自动填充功能,可以大大提升用户输入体验。无论是在嵌入式系统的用户界面中,还是在其他需要虚拟键盘的应用中,

m0_62599305的博客 2185

vue在多个按钮之间切换选中状态

写了一个简易的按钮切换选择需求,具体的样式都可以自由更改 HTML: <span class="btn-time" @click="selectTime($event)">02:30~03:00</span> <!--class可以更改,但是后面的方法内的className部分也要跟着修改--> data: beforeTarget:{} //记录上次点击的按钮 methods: selectTime($event) { //给点击选中的按钮

qq_42583562的博客 5207

终于找到两个稳定好用的Docker镜像加速源,拉取速度提升几十倍!

国内使用Docker经常遇到镜像拉取慢、超时失败的问题🐳 本文分享两个亲测好用的免费镜像加速源⚡ 实测拉取速度从十几分钟缩短到几十秒,稳定性接近100%📊 支持一键配置脚本,支持多平台使用✨

XiaoqiangClub的博客 952

JS:通过getAttribute() / setAttribute()更改元素属性值实现点击更改按钮状态

1.前提: 代码环境:laravel 需求:更改html某一组件状态(我这里是按钮) 重点: 两个方法 getAttribute() setAttribute() 2.实现: 按照需求给组件添加自定义属性(可加可不加,根据具体情况,也可以用自身属性),我这里需要改变的是按钮状态,所以在 当前button 增加一个自定义属性values。 加载页面初始显示根据代码中的判断条件...

Freya1010的博客 1914

[AI] 嵌入模型选择:bge / text-embedding-3 / Jina Embeddings 对比与选型指南

摘要: 本文对比了BGE-M3、OpenAI和Jina三种主流嵌入模型在语言覆盖、性能、延迟、维度和成本等维度的差异。BGE-M3适合中文场景,本地部署成本低;OpenAI API多语能力强但依赖网络;Jina在多语表现突出但需关注商用许可。测试显示BGE-M3本地延迟3-6ms,OpenAI API延迟200-600ms。选型建议:隐私场景选BGE本地部署,多语低维护选OpenAI,高精度选Jina。部署时需注意批处理优化、向量库压缩和商用许可等问题,建议建立评测指标并监控关键指标。

每日出拳老爷子的博客 428

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Swift-技巧(六)设置按钮状态并更改

摘要 按钮是一个宝藏控件,可以在设置的时候就对不同的状态添加图片、文本,甚至更改背景。在不同的展示场景中更改到不同的状态显示就好。恰恰是如何更改状态着实让我懵了一阵,所以记录一下过程。如果没有兴趣了解过程,可以直接滑到底部,截图表格收藏。 之前在处理一个按钮控件,按钮有可以点击和禁止点击两个不同的状态,因为这两种状态有不同的图标,所以就想用 setImage(, for: ) 函数处理: let btn = UIButton() btn.setImage(UIImage(named: "pic1"), .

我为双鱼狂 1930

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Vue Element Html 按钮更改状态

vue+elementui+html 实现按钮修改输入框状态 初学者终于搞懂了,记录一下。 <div id="app"> <el-button @click="change()" type="primary">变</el-button> <a>{{"flag="+flag}}</a> <el-input v-if="flag" placeholder="-------" v-model="input" ><

weixin_41171238的博客 974

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CheckStateChanged(复选框选中状态更改事件)和 CheckedChanged(单选按钮选中状态更改事件)二者区别?...

CheckStateChanged(复选框选中状态更改事件)和 CheckedChanged(单选按钮选中状态更改事件)二者区别: 复选框控件(CheckBox)提供了CheckedChanged控件的选择状态发生改变;双击即可进入CheckedChanged编辑界面,此按钮未提供CheckStateChanged事件。 单选按钮控件(RadioButton)提供了CheckStateChan...

weixin_30412167的博客 1856

Openerp 中点击按钮无法更改状态的问题以及解决方案

在 Openerp 中,用户遇到了一个问题:当点击按钮时,无法从当前状态更改为其他状态。用户已经检查了代码,但没有发现错误。

D0126_的博客 557

pythonqt设置了按钮但是不显示怎么办_python-使用Qt样式表更改状态更改图标

我正在尝试为我的应用程序支持主题设置,但遇到一个问题,我必须根据QPushButton的状态(默认,悬停,按下等)更改图标.这是我用来设置QPushButton图标的内容:QPushButton#playButton {qproperty-icon: url(":/light/icons/play_light.png");}由于悬停状态使用的背景需要深色主题的图标,因此我尝试使用以下方法将其更改为...

weixin_39656853的博客 803

实现多个按钮之间的状态变化跳转

1.在Main.xml文件中定义3个ImageButton, 第一个按钮用图片bnt1 后面两个按钮用,bnt2,bnt3: 得到的界面截图: 2.在MainActivity.java文件中定义一个boolean 类型的数组变量 boolean btState[] = {true,false,false};//第一个按钮默认按下,其他两个按钮未按下。 用来记

Black_Rose_LH的专栏 817

Activity状态更改

Activity状态更改 1、配置发生了更改 当配置发生更改时,Activity 会被销毁并重新创建。原始 Activity 实例将触发 onPause()、onStop() 和 onDestroy() 回调。系统将创建新的 Activity 实例,并触发 onCreate()、onStart() 和 onResume() 回调。 结合使用 ViewModels、onSaveInstanceState() 方法和/或持久性本地存储,可使 Activity 的界面状态在配置发生更改后保持不变。 2、用户点击返

fine123455的博客 490

用 JS 验证工作状态,并通过按钮更改状态。

页面效果展示:点击相应的按钮更改为相应的状态,同时校验对 "已完成" 的状态不能再次 "完成"。 HTML  主要就是在onclick事件上加上参数传至JS页面,state()方法接收参数:onclick="state('recover','1') &lt;td&gt; &lt;@ifAuthority path="/personal/transfer"&gt; &lt;a href.

weixin_40627398的博客 2030

我的Qt学习之路——按钮特效

先看一下点击效果: 我使用的是通过更改按钮的样式表来改变按钮的效果: 右键点击按钮,更改样式表,然后进行设置,输入: QPushButton#queenMenuButton{ background-color: rgba(255, 255, 255, 0); border:2px solid white;border-radius:10px; } QPushButton#q

dala_da的博客 1万+

java gui怎么切换_java – 从另一个按钮更改切换按钮的状态

我正在使用Swing与Eclipse和Window Builder Pro创建一个Java GUI.我正在使用JButtons和JToggleButtons.我想从另一个按钮更改切换按钮的状态.例如,当我单击清除网格时,所有切换按钮将被“未选择”.我该怎么做?什么方法我必须用于切换按钮和按钮?toggleButton.setSelected(boolean b)import java.awt.Bo...

weixin_28889765的博客 279
上一篇: face api协议分析
下一篇: 关于某ios app登录关键字加密分析
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值