小编Dej*_*kic的帖子

在Kotlin课程中使用"Kt"后缀的原因是什么?

我试图在Kotlin文档中找到关于这个决定的更多细节,但没有任何章节"谈及"它.有谁知道是什么驱使在Kotlin的类名中使用"Kt"后缀的决定?它是为了避免与Java类名冲突,还是有更多呢?

kotlin

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

如何在D编程语言中创建DLLAPI()模板mixin,其行为类似于C/C++中众所周知的DLLAPI(或类似)宏?

正如大多数人所知,在C/C++中,当我处理动态库时,我会写一个与此类似的宏.

#ifdef _WIN32
#  define DLLAPI __declspec(dllimport)
#else
#  define DLLAPI
#endif
Run Code Online (Sandbox Code Playgroud)

我想要做的是D编程语言中的模板mixin,所以我可以很好地声明某个库中的函数:

mixin DLLAPI(int, "function1", string, int); // int function1(const char* arg1, int arg2)
mixin DLLAPI(byte, "function2");             // char function2()
// etc
Run Code Online (Sandbox Code Playgroud)

第一个问题是 - 为此使用模板mixin是一个好主意,还是只在version (Windows) {} version (linux) {} //...块中编写代码?第二个问题 - 如何在函数名称之后很好地获取所有类型?:)

templates d mixins

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

如何在JComboBox中检测TAB按键?

我试图找出如何检测当用户按Tab键或通过鼠标单击组件区域外时JComboBox是否失去焦点.

将FocusListener添加到JComboBox的编辑器组件对我没有帮助,因为我无法确定用户是否使用了鼠标或通过tab键移动了焦点.任何想法将不胜感激.

编辑1:我想要实现的是:

  • 假设用户下拉列表(JComboBox popupMenu显示),并通过光标键导航...
  • 案例1:用户按Tab键.在这种情况下,我想从项目中删除一些信息,只显示一些部分.
  • 案例2:用户在popupMenu区域外点击鼠标(这里我们有子类,但它们都属于同一类别).在这种情况下,我想更改JComboBox以显示以前编辑的项目,而不是用户导航的内容...
  • 还有其他几种情况(鼠标项目选择,回车键,转义等).我可以轻松处理这些,但检测选项卡很棘手,因为我无法捕获此事件,因为它由FocusManager处理.

编辑2:似乎我必须使用setFocusTraversalKeysEnabled(false)在TAB被按下时获得通知,当我捕获该事件时,我应该手动转移焦点...我不喜欢这个解决方案,但这是迄今为止我能来的最好的起来.

解:

以下Java代码实际上解决了我的问题.正如我在Edit 2中所写,最简单的解决方案是禁用焦点遍历.我无耻地借用了Kleopatra的代码,现在一切正常.:)

    if (!isTableCellEditor()) {
        comboBoxEditor.setFocusTraversalKeysEnabled(false);

        Action myAction = new AbstractAction() {

            @Override
            public void actionPerformed(ActionEvent e) {
                handleTabPress();
                comboBoxEditor.transferFocus();
            } // actionPerformed() method
        };

        comboBoxEditor.getActionMap().put("tab-action", myAction);
        comboBoxEditor.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
            .put(KeyStroke.getKeyStroke("TAB"), "tab-action");
    } // if
Run Code Online (Sandbox Code Playgroud)

感谢所有参与者的讨论!

java swing key-bindings jcombobox

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

D:在子类中覆盖opDispatch

有没有办法在子类中覆盖opDispatch?我真正想做的是传递一个以超类作为静态类型的变量,但是将对opDispatch的调用重定向到它的子类型(动态类型).

基本上,我希望此代码打印"Sub"而不是"Super".

import std.stdio;

class Super
{
     void opDispatch(string m)()
     {
         writeln("Super");
     }
}

class Sub : Super
{
    override void opDispatch(string m)()
    {
        writeln("Sub");
    }
}

void main()
{   
    Super s = new Sub();
    s.callingOpDispatch; // Writes "Super" instead of "Sub"
}
Run Code Online (Sandbox Code Playgroud)

我傻眼了,因为我无法通过使用抽象方法强制编译器查找方法覆盖(D不允许抽象模板化方法).

PS:有人可以创建标签opDispatch吗?(在我看来这对D会有好处吗?)

inheritance overriding d opdispatch

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

是否可以避免同一应用程序内JComponent之间在DnD中进行序列化?

最近,我解决了从JList到JTable对象的DnD项时遇到的“神秘” IOException。显然,我传输的对象必须可序列化。这是“必须”吗,还是有一种避免序列化的方法?

我必须注意的一件事-我要传输的类型在另一个程序包中。

java swing serialization drag-and-drop

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

如何将关联数组的键作为数组获取

(这是一个常见的D问题.)

假设我有一个D关联数组:string[int] aarr = [ 3 : "three", 5 : "five", 9 : "nine" ]; - 有一种简单的方法可以将aarr的密钥作为数组吗?

d

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

有没有办法在Netbeans 7.4中进行"svn switch"?

我试图弄清楚如何在NetBeans 7.4中进行svn切换.到目前为止,我在网上找不到任何参考如何做到这一点.我们是否真的必须在命令行之间切换分支,或者有一些方法可以使用NetBeans Subversion插件执行此操作?

svn netbeans

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

当用户关闭应用程序窗口时,是否有一种优雅的方法可以使JTable停止编辑?

我试图找到一种优雅的方法,当用户关闭主应用程序窗口时,使JTable停止单元格编辑(实际取消它).我知道可以使用WindowAdapter完成这样的事情,但为了使其正常工作,我需要对窗口的引用.问题是我有时候没有它.

java swing jtable tablecelleditor

2
推荐指数
2
解决办法
5602
查看次数

Appender和〜有什么区别?

我已经读过如果我经常分配字符串我应该使用Appender,但是什么原理工作Appender~运算符不同?

两者(afaik)都使用GC进行内存分配.那么区别是什么呢?哪一个比另一个好?

arrays string d append

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

D中的减量操作有区别吗?

我正在使用动态数组来实现我的堆栈.我写了pop如下:

int pop() {
        int n = arr[--arr.length];
        return n;
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码我Range violation在运行时遇到错误.但是使用以下代码:

int pop() {
        int n = arr[arr.length - 1];
        arr.length--;
        return n;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.我不明白为什么,对我来说两者都应该是等价的.我错过了什么?

编辑:也许这就是为什么--arr.length导致我要访问的元素被从数组中"删除"?

还有,push(N)就是这样arr ~= n;

d

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

NFC 或 NFD - 有什么区别?

在 Ingres 中,DBA 在创建支持 Unicode 的 Ingres 数据库时有两个选择。createb 具有-iNFC(标准化形式 C)和-nNFD(标准化形式 C)的标志。文档对它们没有区别,描述几乎相同。

我们是否可以假设它们之间没有差异,或者实际上存在一些差异?

ingres

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