我试图在组件的工具提示中显示多个图像,找到createToolTip()
并实现了一个自定义,添加了所需的组件,如下所示:
setComponent(component);
JPanel images = new JPanel(null);
images.setLayout(new BoxLayout(images, BoxLayout.X_AXIS));
for(ImageIcon icon:myIcons) {
images.add(new JLabel(icon));
}
JPanel content = new JPanel(new BorderLayout());
content.add(new JLabel(title), BorderLayout.NORTH);
content.add(new JLabel(description));
content.add(images, BorderLayout.SOUTH);
add(content);
Run Code Online (Sandbox Code Playgroud)
但是,我看到的只是一个小点,表示显示了工具提示,但不知何故忽略了大小.我错过了实施自定义工具提示的内容?
tl; dr-edition:我有一个编译,我知道它会失败,但是想要编译target/classes
后仍可在我的文件夹中编译的类的子集。我已经配置了<failOnError>false</failOnError>
,但没有生成任何类,甚至没有生成一个虚拟类,该虚拟类独立于除以外的任何其他类Object
。是否有一些配置可以实现这一目标?
我有一个由Maven驱动的项目,该项目的工作流程基本上包括以下(相关)目标:
...
init-compile
代码生成器(下面)使用基于反射的配置,因此,在第一遍中,我想尝试编译尽可能多的项目,以便不向其中抛出ClassNotFoundExceptions。配置了此编译,<failOnError>false</failOnError>
以便继续构建。
不幸的是(您可以称其为设计缺陷),该配置用于代码生成(指定OWL文件和命名空间以映射到程序包)和运行时,因此它还包含代码生成器不需要的其他元素,但是仍然被读取,因此需要在类路径上才能成功。
generate-model
在此步骤中,将从OWL-Ontology生成一些模型类,从而创建使项目的其余部分完全可编译的代码。
default-compile
现在,显然应该编译其余的类
save-model
现在,将读取本体中的实例并将其序列化为文件以进行运行
...
旁注:生成和保存模型都使用maven-exec-plugin
,但我真诚地认为这根本不重要。
题:
当我使用运行我的构建时mvn -e -U clean package source:jar javadoc:jar install:install
,它在generate-model
目标执行过程中因我要避免的错误而失败。target/classes
是空的,因此似乎编译器不会吐出它本可以/应该能够处理的类的子集。有没有办法做到这一点?
我有两个我都不喜欢的变通办法:
init-compile
目标配置为仅包括所需的类(太不灵活,因为POM应该/可能是使用同一模型的将来应用程序的模板)。如果您可以想象从描述中看到解决我的问题的另一种方法,那么我也很高兴听到他们的声音!
我有一个看起来像这样的案例类:
case class A(first: B*)(second: C*)
Run Code Online (Sandbox Code Playgroud)
这两个first
和second
重复,所以我把在不同的参数列表.但是,我希望second
在很多情况下可能是空的,所以能够像A(???, ???)
没有尾随空括号那样使用类就好了.我尝试了以下方法:
case class A(first: B*)(second: C*) {
def this(first: B*) = this(first: _*)()
}
Run Code Online (Sandbox Code Playgroud)
哪能给我ambiguous reference to overloaded definition
.
有没有办法明确地编写这个构造函数调用?(并且我能够调用重载的构造函数而不会再次混淆语法吗?)我的猜测是否定的,有一些关于这种语法糖会如何破坏currying或其他一些问题的争论,但我更愿意听到来自某人的声音比我更多Scala知识;)
我有一个用例,我想用一种额外的调用方法来装饰一个方法,例如在以下代码中:
def decorator(func):
def enhanced(*args, **kwargs):
func(*args, **kwargs)
func.enhanced = enhanced
return func
@decorator
def function():
pass
class X:
@decorator
def function(self):
pass
x = X()
function()
function.enhanced()
x.function()
# x.function.enhanced()
x.function.enhanced(x)
Run Code Online (Sandbox Code Playgroud)
前三个调用按预期工作,但x.function.enhanced()
没有;我必须写信x.function.enhanced(x)
才能让它发挥作用。我知道这是因为func
传递给装饰器的不是绑定方法而是函数,因此需要传递self
显式传递。
但我该如何解决这个问题呢?从我对描述符的一点了解来看,它们仅在查找类时才相关,而func
不是类,func.enhanced
不会以我可以拦截的方式查找。
我在这里可以做些什么吗?
我正在尝试编写一个列出多个结构字段的宏,但有条件地仅从列表中的某些字段创建初始化程序代码。具体来说,可能看起来像这样:
#[test]
fn test() {
#[derive(PartialEq, Debug)]
struct Foo {
bar: usize,
}
let a = Foo {
bar: 0,
};
let b = test!(Foo {
bar: 0,
#[nope] baz: 0,
});
assert_eq!(a, b);
}
Run Code Online (Sandbox Code Playgroud)
Foo
没有 field baz
,并且#[nope]
应该告诉宏对该字段不执行任何操作;真正的宏会baz
在一个位置使用,但不会在另一个位置使用,并且还需要处理其他“属性”。
这是接受调用但不忽略的基线宏baz
:
macro_rules! test {
(
$struct:ty {
$($(#[$modifier:ident])? $field:ident: $value:expr,)*
}
) => {
{
// don't mind this syntax workaround
type X = $struct;
X {
$($field: $value,)*
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道对不同的重复使用不同的规则的技巧是将每个重复委托给辅助规则。这是相同的宏,将常规变体和不变体分开: …
我已经看过这里,但无法弄清楚我想知道的事情:如何git push
或git pull
弄清楚另一边缺少哪些提交对象?
假设我们有一个包含以下提交的存储库:(字母代表SHA-1 ID,d
是refs/heads/master
)
a -> b -> c -> d
Run Code Online (Sandbox Code Playgroud)
相比之下,遥控器具有:
a -> e -> f -> g
Run Code Online (Sandbox Code Playgroud)
根据git文档,遥控器会告诉我们它refs/heads/master
处于g
,但由于我们不知道该提交,这实际上并没有告诉我们什么.怎么能够找出丢失的数据?
在另一个方向,该文件说:
此时,fetch-pack进程会查看它拥有的对象,并通过发送"want"然后发送它想要的SHA-1来响应它所需的对象.它使用"have" 发送它已经拥有的所有对象,然后发送SHA-1.在此列表的末尾,它写入"done"以启动upload-pack进程以开始发送所需数据的packfile:
这解释了遥控器如何确定要发送的数据,但这不会影响具有许多对象的存储库的性能吗?否则,文本中实际意味着什么呢?
显然,根据方向(推动与拉动),数据传输的方式是非常不同的.这个设计选择遇到了什么以及如何遇到挑战,我如何理解文档中的描述?
我有一个看起来像这样的 Django 模型(当然是简化的):
from django.db import models
from polymorphic.models import PolymorphicModel
class Tournament(models.Model):
slug = models.CharField(max_length=100, unique=True)
class Event(PolymorphicModel):
tournament = models.ForeignKey(Tournament, related_name='events')
slug = models.CharField(max_length=100)
class PracticeEvent(Event):
pass
class MatchEvent(Event):
winner = models.CharField(max_length=100, null=True, blank=True, default=None)
Run Code Online (Sandbox Code Playgroud)
锦标赛包括两种赛事:练习赛和比赛。我想使用 GraphQL 和 Graphene 公开这个模型。这是我想出的:
import graphene
from graphene_django import DjangoObjectType
from . import models
class TournamentType(DjangoObjectType):
class Meta:
model = models.Tournament
exclude_fields = ('id',)
class EventType(graphene.Interface):
tournament = graphene.Field(TournamentType, required=True)
slug = graphene.String(required=True)
class PracticeEventType(DjangoObjectType):
class Meta:
model = models.PracticeEvent
interfaces = …
Run Code Online (Sandbox Code Playgroud) 在一个简单的嵌入式项目中,我有两个文件main.rs
和module.rs
. 为了构建该项目,我使用类似的东西:
all: main.o
$(CC) main.o $(LDFLAGS)
%.o: %.rs
$(RUSTC) $(RUSTFLAGS) -o ${@} ${<}
Run Code Online (Sandbox Code Playgroud)
如果仅module.rs
更改,make all
则不会重新编译我的 Rust 代码。我怎样才能解决这个问题?
作为第一步,我发布了一个次优的自我回答,但希望看到更好的方法。
我正在尝试 Apollo 并使用以下相关代码:
const withQuery = graphql(gql`
query ApolloQuery {
apolloQuery {
data
}
}
`);
export default withQuery(props => {
const {
data: { refetch, loading, apolloQuery },
} = props;
return (
<p>
<Button
variant="contained"
color="primary"
onClick={async () => { await refetch(); }}
>
Refresh
</Button>
{loading ? 'Loading...' : apolloQuery.data}
</p>
);
});
Run Code Online (Sandbox Code Playgroud)
服务器延迟 500 毫秒,然后再发送{ data: `Hello ${new Date()}` }
作为有效负载的响应。当我单击按钮时,我希望看到Loading...
,但组件仍然会在Hello [date]
半秒后显示并重新渲染。
根据此,在networkStatus
应该是4( refetch
),并且因此loading
应该是真实的。我的期望错了吗?或者 …
我有一个内部案例类,特别是来自这个问题的事件,并且想要匹配它,包括外部对象:
class Player {
var _life = 20
def life = _life
def gainLife(life: Int) = execute(GainLife(life))
case class GainLife(life: Int) extends Event {
def execute() = _life += life
}
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松编写一个替换特定玩家生活事件的效果(部分功能):
//gain twice as much life
def effect(player: Player): ReplacementEffect = {
case player.GainLife(x) => player.GainLife(x * 2)
}
Run Code Online (Sandbox Code Playgroud)
但是,对于其他玩家我不能这样做.我最接近的是:
//only you gain life
def effect2(player: Player): ReplacementEffect = {
case evt: Player#GainLife => player.GainLife(evt.life)
}
Run Code Online (Sandbox Code Playgroud)
但是1)这甚至取代了你自己的生活费用新的生活费用,2)我不能引用最初在功能中获得生命的玩家和3)我错过了直接匹配life
这种方式.
这可以使用与路径无关的类型表示
case Player.GainLife(_player, life) if _player != …
Run Code Online (Sandbox Code Playgroud)