小编ran*_*ror的帖子

当我在statechange上显示一个对话框时,JCheckbox会改变状态两次,如何修复?

我有一个复选框,当用户选择它时,应生成一个带有更多信息的对话框,并在用户做出反应时做一些事情.我的代码基本上看起来像这样:

private void onItemStateChanged(java.awt.event.ItemEvent evt) {
    System.out.println("STATE CHANGED!");//TODO debug code
    if (evt.getStateChange() == ItemEvent.SELECTED) {
        int returnVal = JOptionPane.showConfirmDialog(this, "blablatext");
        if (returnVal == JOptionPane.OK_OPTION) {
            this.field1TF.setText("");
            this.field1TF.setEditable(false);
            this.field2TF.setText("");
            this.filed2TF.setEditable(false);
        }else if(returnVal == JOptionPane.NO_OPTION){
            this.field1TF.setText("");
            this.field1TF.setEditable(false);
            this.field2TF.setText("");
            this.field2TF.setEditable(false);
        }
    } else if(evt.getStateChange() == ItemEvent.DESELECTED){
        this.field1TF.setEditable(true);
        this.field2TF.setEditable(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,当我点击它时,我的复选框会一直改变状态两次.它以某种方式与JOptionPane.showConfirmDialog有关,因为如果我对它进行评论,它就会按预期工作.我不知道我应该关心的一些简单的事情,或者我需要做些什么才能得到我想要的反应?(用户点击复选框 - >被问到一个问题 - >选择是/否/取消 - >程序相应地行动)

java swing joptionpane jcheckbox

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

Vuejs 和 vue-socketio:如何将套接字实例传递给组件

我正在尝试将 Vuejs 与Vue-Socket.io 插件一起使用,并且对在组件之间传递套接字的正确方法有疑问。

理想情况下,我想在整个应用程序中仅使用一个套接字,因此我想在根实例中实例化该套接字,然后将其传递给需要它作为“prop”的组件。这是正确的做法吗?

如果是这样,我做错了什么?我收到的错误是TypeError: this.socket.emit is not a function我可能没有正确传递套接字对象。

使用socket的组件有以下脚本

<script>
  export default {
    name: 'top',
    props: ['socket'],
    data () {
      return {
        Title: 'My Title'
      }
    },
    methods: {
      button_click: function (val) {
        // This should emit something to the socketio server
        console.log('clicking a button')
        this.socket.emit('vuejs_inc', val)
      }
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

我在根组件中的初始化如下所示:

import Vue from 'vue'
import VueSocketio from 'vue-socket.io'
import App from './App'
import router from './router'

Vue.use(VueSocketio, 'http://127.0.0.1:5000')
Vue.config.productionTip = false …
Run Code Online (Sandbox Code Playgroud)

javascript architecture vue-component vuejs2

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

Vim:在捕获组中使用集合(或:用不同的标签替换标签)

我有一个Latex文档,我希望$ .. $用适当的乳胶等效替换所有mathmode标签\( .. \).

我已经使用了这个正则表达式:%s/\$\(.\+\)\$/\\(\1\\)/gc但是当然这很简单,我在一行中有超过1个tagpair,即

This is an example: $ 1+2=3 $ and $4+5=9$
Run Code Online (Sandbox Code Playgroud)

什么是解决这个问题的简单方法?我尝试在我的捕获组中使用这样的集合:\([^\$]\)但这不匹配.

编辑:原因\([^\$]\)不匹配是因为我错过了添加量词如下:\([^\$]\+\).这也将起作用,因为接受的答案下的评论显示.

regex vim

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