Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java SWT更新文本控件

自1996年以来,我已经编写了很多java代码,但从未尝试过SWT。我认为我应该选择一些非常简单的东西开始,但我很早就卡住了,即使我面前有几本SWT/Jface/RCP书籍,它们对我的问题也没有帮助。

我正在尝试让一个命令行应用程序在SWT窗口中运行。它不需要用户的任何类型的输入,它只需要显示sysout。应用程序很少会生成超过30行的sysout。

代码语言:javascript
运行
AI代码解释
复制
public class TestGui implements Runnable {

private Display display;
private Shell shell;
private Text text;

public void run() {
    display = new Display();
    shell = new Shell(display, SWT.DIALOG_TRIM);
    shell.setText("SWT Test");
    shell.setSize(new Point(800, 400));
    shell.setLayout(new FillLayout());
    text = new Text(shell, SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
}

void addMessage(String s) {
    text.append(s);
    text.append("\n");
}

void close() {
    display.dispose();
}

public static void main(String[] args) {
    TestGui pr = new TestGui();
    pr.run();
    pr.addMessage("add some text");
    pr.close();
}
 }

我运行这个程序,我看到了一个窗口,其中的光标闪烁得令人放心,但其中没有其他任何内容。在关闭窗口之前,我似乎无法运行对addMessage()方法的调用,当然,此时Shell已被释放,因此我得到了一个异常。

我确信我错过了一个关键的步骤...

谢谢

克里斯

EN

回答 2

Stack Overflow用户

发布于 2013-02-09 16:06:38

问题是,run方法中的while循环会一直等待,直到显示器被实际释放,因此这种情况下,run方法只能在显示器被释放之后才能完成。

我不是SWT方面的专家,但是可以尝试将while循环移到main方法中,或者将对addMessage的调用移到run方法中。无论采用哪种方式,都必须在等待帧被释放之前添加消息。

票数 2
EN

Stack Overflow用户

发布于 2013-03-07 11:17:17

我发布的原始示例中的问题是,添加消息的代码从未执行过,正如回复所指出的那样。因此,我分离了一个单独的线程,并从那里调用消息。我仍然在做它,当我有时间让它正常工作时,我会更新它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14789366

复制
相关文章
[Leetcode 2021 刷题计划] 224. 基本计算器
由于只含有加减法和括号, 并不需要考虑运算优先级的问题,仅有由于括号外符号对括号内符号的影响。所以只需要考虑括号外符号对括号内符号的反转。
windism
2021/03/10
2910
224. 基本计算器
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
张伦聪zhangluncong
2022/10/26
3840
227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
张伦聪zhangluncong
2022/10/26
3130
[Leetcode 2021 刷题计划] 227. 基本计算器 II
每日一题时间: 2020-03-11 题目链接: 227. 基本计算器 II 官方题解链接: 基本计算器 II 题目 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5 提示: 1 <= s.length <= 3 * 105 s 由整数和算符 ('+', '-', '*', '/') 组成,中间
windism
2021/03/11
3220
c++实现简单计算器
帮一个同学写的,非计算机类专业,应付交差,也没什么功能,两个数的加减乘除运算,以及三角函数的运算。要求用到模板、运算符重载和异常处理。 一直以来都是用的java,没怎么用过c++,就当是复习了一下c++语法。 代码如下: 1 #include<iostream> 2 #include<string> 3 #include<cmath> 4 #include<cstdlib> 5 6 using namespace std; 7 8 //四则运算 9 template
欠扁的小篮子
2018/04/10
2K0
Basic Calculator 基本计算器-Leetcode
1.题目: Implement a basic calculator to evaluate a simple expression string. The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces . You may assume that the given expression is
老白
2018/03/19
1.2K0
227. 基本计算器 II
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5 class Solution { public int calculate(String s) { /** 有一个记录上一次出现的符号变量的 pre 加法直接入栈
编程张无忌
2021/06/01
3280
LeetCode 224. 基本计算器(栈)
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
Michael阿明
2020/07/13
5590
c++多态案例之计算器类
案例描述:利用普通技术和多态技术分别实现两个操作数进行运算的计算器类。 多态的优点:代码结构清晰;可读性强;利于前期和后期的扩展以及维护; #include<iostream> using namespace std; //普通写法,如果想扩展,需要修改源码 //在实际开发中,提倡开闭原则,对扩展进行开发,对修改进行关闭 class Calculator { public: int num1; int num2; int getResult(string oper) {
西西嘛呦
2020/08/26
6340
LeetCode 227. 基本计算器 II(栈)
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
Michael阿明
2020/07/13
6250
LeetCode 227. 基本计算器 II(栈)
C++基本语法
&在c++中的一种作用为取出当前变量在内存的逻辑地址 *在c++中的一种作用为取出当前逻辑地址对应的内存空间的值 c++中提供指针变量存储对象的地址,指针的运算会被编译器优化为地址的运算,比如一个int类型的指针 p+1的值实际是p指向的地址+1个int所占空间大小后的逻辑地址 指针语法为 typename * variable,比如
歪歪梯
2020/08/17
1.1K0
用C++模拟"奇怪"的手机计算器
风水轮流转,出道多年一向默默无闻的手机计算器突然成了网红,类似手机计算器“全线阵亡”这样的言论充斥各种媒体。问题的起源是网友发现手机计算器上计算10%+10%这样的小学数学范畴的运算时,手机计算器得出的结果并不是标准数学答案0.2,而是让人觉得有点奇怪的0.11!这是不是手机计算器软件设计者出现的bug呢?
诸葛青云
2019/10/07
9030
用C++模拟"奇怪"的手机计算器
力扣227——227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。整数除法仅保留整数部分。
健程之道
2020/03/12
3410
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
恬静的小魔龙
2022/09/27
4560
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
简单计算器 C++ 你是真的会玩坑
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
叶茂林
2023/07/30
2360
小朋友学C++(24):实现简易计算器
一、需求 编写一个简易计算器,能实现最基本的加减乘除四则运算。 二、代码实现 #include <iostream> using namespace std; int main() { double num1,num2; char op; // 运算符号 char flag; // 是否继续运算,'Y'或'y'表示是,'N'或'n'表示否 while(true) { cout << "Enter first number:" << end
海天一树
2018/12/24
7980
【C++简明教程】C++基本语法
在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
机器视觉CV
2020/07/23
9680
【C++简明教程】C++基本语法
C语言和C++混合开发简单版本计算器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
1.2K0
C语言和C++混合开发简单版本计算器
基于STM32设计的计算器(实现基本运算)
计算器是最常见的工具了,现在不管是手机、电脑都带有计算器功能,支持强大的科学运算等。
DS小龙哥
2022/01/06
2K0
基于STM32设计的计算器(实现基本运算)
C++ OpenCV基本阈值操作
新建一个项目opencv-0014,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.这次我们直接在第二个图片上加上一个TrackBar直接显示出来,然后再进行操作,其中定义了一个thresthold_value的值为TrackBar的初始值,然后写了定义一了个TrackbarEvent(int,void*)的事件用于关联Trackbar的,这次我们加载的图片是几何形状的图片
Vaccae
2019/07/24
2K0

相似问题

C++新手-基本计算器问题

40

C++基本计算器。初学者

34

基本计算器

23

基本贷款计算器

12

基本JFrame计算器

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档