小编Zoy*_*oyd的帖子

必须在EDT中调用AWT类中的所有方法,即非Swing方法吗?

我最近了解到Sun的/ Oracle最新指南说,任何Swing对象(包括构造函数)的Swing方法都不能在EDT之外调用.

相同的严格标准是否也适用于所有"视觉"AWT课程?如果没有,**对他们来说是什么规则?

后来

re Swing和EDT:2009年的讨论.

http://www.velocityreviews.com/forums/t707173-why-does-jdk-1-6-recommend-creating-swing-components-on-the-edt.html

引用:"除了实际的线程安全性和相关问题,如可见性和同步,我认为是一个软件问题.Swing组件通常具有某种类型的"监听器",并且这些监听器设计为在EDT上执行.

由于这些侦听器是异步的并且响应事件(如属性更改),因此可以在构建GUI时触发这些侦听器.结果是,当您在主线程中构建时,某些侦听器正在EDT上执行,并且一些侦听器也可能在其他线程上运行(因为侦听器混淆并在错误的线程上触发).结果是巨大的不可预测的混乱."

也许他们不知道他们在谈论什么......但目前我采取的是"更安全而不是抱歉"的方法.Potochkin,http: //weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html 似乎也认为我们熟悉后来更严格的规则

java swing awt event-dispatch-thread

1
推荐指数
1
解决办法
348
查看次数

JProgressBar没有更新

我已经制作了一个非常简单的代码来显示它,我有一个按钮,应该显示一个JDialog来检查进度状态,我使用调用后期通过EDT而我的循环不在run方法中,所以为什么不是我的酒吧更新?这是代码

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JBarEx extends JFrame {
private JTextField progStatus = new JTextField("Undefined");
private JButton dialogBtn = new JButton("Show Progression dialog");
final JDialog dlg = new JDialog((JFrame) null, "prog Title", false);
final JProgressBar dpb = new JProgressBar(0, 100);

public JBarEx() {
    JPanel pan = new JPanel();
    dialogBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated …
Run Code Online (Sandbox Code Playgroud)

java swing jprogressbar event-dispatch-thread

1
推荐指数
1
解决办法
1万
查看次数

如何在 Go 中处理大整数?

我需要在 Go 中对 int64 的大值执行取幂和除法等操作,但我遇到了溢出问题。我尝试将它们转换为 float64,但后来遇到了其他问题。这是我尝试过的。

我有一个整数变量,我必须将其转换为 float64 才能使用方便的数学包 ( https://golang.org/pkg/math )。

但是,当整数变量太大时,它不会正确转换。我假设这是因为大小大于 float64。前任:

fmt.Printf("%f",float64(111111111111111110)) //Outputs 111111111111111104.000000
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 math.Mod、math.Pow10 和 math.Log10。我如何才能执行以下逻辑,但上面显示的数字很大?

int(math.Mod(float64(123) / math.Pow10(1),10))) // Gets the second digit
Run Code Online (Sandbox Code Playgroud)

go

1
推荐指数
1
解决办法
3361
查看次数

render.Bind 中驰空 http.Request.Body

我正在使用github.com/pressly/chi构建这个简单的程序,我尝试从以下位置解码一些 JSON http.Request.Body

package main

import (
    "encoding/json"
    "fmt"
    "net/http"

    "github.com/pressly/chi"
    "github.com/pressly/chi/render"
)

type Test struct {
    Name string `json:"name"`
}

func (p *Test) Bind(r *http.Request) error {
    err := json.NewDecoder(r.Body).Decode(p)
    if err != nil {
        return err
    }
    return nil
}

func main() {
    r := chi.NewRouter()

    r.Post("/products", func(w http.ResponseWriter, r *http.Request) {
        var p Test
        // err := render.Bind(r, &p)
        err := json.NewDecoder(r.Body).Decode(&p)

        if err != nil {
            panic(err)
        }

        fmt.Println(p)
    })

    http.ListenAndServe(":8080", r)
} …
Run Code Online (Sandbox Code Playgroud)

json http go go-chi

1
推荐指数
1
解决办法
5507
查看次数

你如何在一个陷阱中进行挥杆调用

在catch块中,我想向textArea显示一条错误消息,以显示发生的错误.

java user-interface swing try-catch event-dispatch-thread

0
推荐指数
1
解决办法
108
查看次数

Go - 运算符重载

我已经开始研究Go了,我想了解下面发生的事情:

time.Sleep(1000 * time.Millisecond) // Works
time.Sleep("1000ms") // Doesn't work
Run Code Online (Sandbox Code Playgroud)

如果您打印到控制台,time.Milliseconds您可以看到1ms.所以我认为我可以简单地用值调用该方法"1000ms",但是我得到一个错误.接下来我在Go中搜索了运算符重载,但它不支持它.我知道time.Sleep获取time.Milliseconds数据类型,但如果它不支持重载运算符,Go如何允许它*

go

-3
推荐指数
1
解决办法
397
查看次数