小编Max*_*Hax的帖子

如何将值从JDialog框返回到父JFrame?

我创建了一个模态JDialog框,其上有一个自定义绘图和一个JButton.当我单击JButton时,JDialog框应该关闭,并且应该返回一个值.

我在父JFrame中创建了一个名为setModalPiece的函数,它接收一个值并将其设置为本地JFrame变量.

问题是从JDialog框中看不到此函数(即使JDialog框具有对父JFrame的引用).

两个问题:1)有没有更好的方法将值从JDialog框返回到其父JFrame?

2)为什么不能使用传递给JDialog的JFrame的引用来访问我的JFrame函数setModalPiece?

java swing return-value jdialog

43
推荐指数
2
解决办法
7万
查看次数

没有可用于 Typescript 文件的重构

由于某种原因,虽然它应该捆绑到 VSCode 中,但当我在 Typescript 文件中选择某些代码并触发“重构...”命令时,我总是看到“没有可用的重构”消息。

使用热键(Ctrl+Shift+R)和使用上下文菜单(右键单击选择,选择“重构”...)都会发生这种情况。

我该如何诊断这个问题?

refactoring typescript visual-studio-code

5
推荐指数
0
解决办法
403
查看次数

为什么在我的Typescript对象上允许使用此额外属性?

我们最近开始在网络平台项目中使用打字稿。

强大的键入系统应该是它的一大优点,它可以在编译时检查各种类型的正确性(假设我们付出了适当的努力来建模和声明我们的类型)。

目前,我似乎已经发现了类型系统能够实现的极限,但是似乎不一致,而且我可能只是使用了错误的语法。

我正在尝试对我们的应用程序将从后端接收的对象类型进行建模,并使用类型系统让编译器在应用程序中的所有位置检查以下内容:

  1. 结构,即TS编译器仅对类型的对象允许使用现有(枚举)属性
  2. 属性类型检查,即TS编译器知道每个属性的类型

这是我的方法的最小化版本(或直接链接到TS游乐场

interface DataObject<T extends string> {
    fields: {
        [key in T]: any   // Restrict property keys to finite set of strings
    }
}

// Enumerate type's DB field names, shall be used as constants everywhere
// Advantage: Bad DB names because of legacy project can thus be hidden in our app :))
namespace Vehicle {
    export enum Fields {
        Model = "S_MODEL",
        Size = "SIZE2"
    }
}

// CORRECT ERROR: Property "SIZE2" …
Run Code Online (Sandbox Code Playgroud)

types typescript typescript-generics

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

从单个char到指针的映射的Plain C实现

我有高级语言的编程经验,并且几周前开始使用普通C编码(出于学术原因).我想实现类似于的数据结构map<char,myStruct*>.

如果这还不够清楚:我希望将每个可能的SINGLE"映射" char到指向我在其他地方定义的结构的指针上.如果有一种方法可以确保没有2 char秒可以指向相同的struct(char在将新元素插入地图时不检查其他内容)那将是整洁的,但这不是绝对必要的.我还需要能够从地图中删除配对,并重新插入具有相同键但不同指针的配对.

我已经想到了这一点,并认为我可以创建一个指针数组所有可能的字符长度,并只使用char作为数组索引存储相应的指针(因为它只是一个数字常量).这可能非常有用,但如果我最终在我的应用程序中只使用几个字符,那么为地址分配那么多空间似乎效率低下.

尽管如此,我还是没有想到任何替代解决方案(考虑到我是C新手,不是那么令人惊讶).我会很感激任何,甚至模糊的建议,朝着正确的方向前进.

c implementation map

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

在Typescript中将两种类型完美地组合成一个界面

我的目标

我有一个字符串,enum E并且具有一interface I组相同的键。我想构造一个新的映射类型。对于每个共享密钥k,它应使用枚举值E.k作为属性名称。成员的类型I.k应该是此新属性的类型。

我的用例的一些背景/动机

我从REST API获取对象。我无法改变他们的结构。由于遗留原因,对象的键名非常难以阅读且难看(我FooNames在示例中对此进行了模拟)。这使开发过程痛苦不堪,并不必要地增加了代码错误,但在使用这些对象并对其进行操作时,在理解上却更为关键。

我们使用自己的干净接口(通过via模拟"first" | "second" | "third")隐藏了这些名称。但是,将对象写回后端时,它们需要再次具有“丑陋”的结构。对象类型有几十种(每种类型具有不同的字段集),这使得处理混乱的字段名称变得如此痛苦。

我们正在尝试最小化冗余-同时仍通过TS编译器进行静态类型和结构检查。因此,基于现有抽象触发类型检查的映射类型将非常有帮助。

代码示例

可以将BackendObject以下类型以某种方式在Typescript中实现为映射类型吗?到目前为止,我还没有找到方法。有关此问题中的所有代码,请参见此操场

// Two simple abstractions per object type, e.g. for a type Foo....
enum FooNames {
  first = 'FIRST_FIELD',
  second = 'TT_FIELD_SECOND',
  third = 'third_field_33'
}
interface FooTypes {
  first: string,
  second: number,
  third: boolean
}
// ... allow for generic well-formed objects with structure …
Run Code Online (Sandbox Code Playgroud)

generics types typescript typescript-generics

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