小编Qui*_*ion的帖子

Swing vs JavaFx用于桌面应用程序

我有一个非常大的程序,目前正在使用SWT.该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序.现在SWT有点老了我想切换到Swing或JavaFX.我想听听你对三件事的看法.

我主要担心的是桌面GUI应用程序会有什么好处?(我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据).它必须适用于Windows,Mac和一些流行的Linux发行版.

  • 什么更干净,更容易维护?

  • 从头开始构建什么会更快?

我在我的应用程序中使用MVC方法,如果有任何帮助的话.

java user-interface swing javafx swingx

189
推荐指数
4
解决办法
21万
查看次数

带参数的多行字符串.怎么申报?

假设我有一个非常长的字符串,其中包含我想要创建的参数.我知道你可以创建一个多行字符串

cmd = """line 1
      line 2
      line 3"""
Run Code Online (Sandbox Code Playgroud)

但现在让我说我想传递1,2和3作为参数.

这有效

cmd = """line %d
      line %d
      line %d""" % (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个包含30多个参数的超长字符串,我怎么能在多行中传递这些参数呢?将它们传递到一行就会破坏甚至尝试创建多行字符串的目的.

感谢任何人提前获得他们的帮助和见解.

python

54
推荐指数
7
解决办法
6万
查看次数

java.awt.EventQueue.invokeLater解释道

我很好奇为什么我们必须java.awt.EventQueue.invokeLater用来控制摆动部件.

为什么我们不能在普通线程中这样做?幕后究竟发生了什么?根据我的注意,如果我有一个JFrame我可以从主线程设置可见性为true或false而不会出现任何错误,它似乎确实有效.那么通过使用我究竟能达到什么目的java.awt.EventQueue.invokeLater呢?我也完全清楚我可以使用,SwingUtilities.invokeLater但正如这里解释的那样,它们似乎是同一个东西.

感谢任何人的解释.希望这是一个有效的问题.

编辑:回答wumpz问题我们可以创建一个jframe

JFrame frame = new JFrame("Hello world");
frame.setSize(new Dimension(300, 300));
frame.setPreferredSize(new Dimension(300, 300));
frame.setMaximumSize(new Dimension(300, 300));
frame.setMinimumSize(new Dimension(300, 300));
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

在创建的同一个线程上执行以下操作.

for (int i = 0; i < 34; i++)
{
    System.out.println("Main thread setting to "+(!frame.isVisible()));
    frame.setVisible(!frame.isVisible());
}
Run Code Online (Sandbox Code Playgroud)

并没有抱怨.

java swing asynchronous event-handling

34
推荐指数
2
解决办法
5万
查看次数

git将本地提交的更改移动到新分支并推送

我在master.我被告知当我做git状态时

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 13 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

因此所有13只存在于我的本地机器上.问题是这13个提交现在应该放在我应该创建的新分支上并推送到服务器上.我曾经尝试过看看rebase,但有人告诉我

$ git rebase origina/master
fatal: Needed a single revision
invalid upstream origina/master
Run Code Online (Sandbox Code Playgroud)

如何在不弄乱主人的情况下将这些更改推送到新分支?

只是为了澄清.这不是
将已提交(但未推送)更改移动到新分支的重复,无论我做什么,这对我来说根本不起作用.
或者
Git:如何将上次提交后的更改移动到新的分支再没有帮助.

git branch rebase git-rebase git-branch

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

java.lang.NoClassDefFoundError:尝试运行jar时

我有一个使用gradle的spring boot项目

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'jetty'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.5.1.RELEASE") {
        exclude module: "spring-boot-starter-tomcat"
    }
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty', version: '1.5.1.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.5.1.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-context-support', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-orm', version: '4.3.6.RELEASE'
    compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
    compile group: 'org.freemarker', name: 'freemarker', version: '2.3.23'
    compile group: …
Run Code Online (Sandbox Code Playgroud)

java jar gradle build.gradle spring-boot

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

Hibernate扩展了同一个表的实体

我有一个有两个字段的表我希望有两个对象.

第一个只有field1

@Entity(name = "simpleTableObject")
@Table(name = "someTable")
public class SimpleTableObject
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    protected long id;

    @Column(name = "field1")
    private String field1;
Run Code Online (Sandbox Code Playgroud)

第二个有两个领域

@Entity(name = "tableObject")
@Table(name = "someTable")
public class TableObject
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    protected long id;

    @Column(name = "field1")
    private String field1;

    @Column(name = "field2")
    private String field2;
Run Code Online (Sandbox Code Playgroud)

我使用加载每一个

@Transactional(readOnly = true)
@SuppressWarnings("unchecked")
public List get(Class aClass)
{
    ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(aClass);
    if (hibernateMetadata == null)
    { …
Run Code Online (Sandbox Code Playgroud)

java hibernate

9
推荐指数
3
解决办法
8173
查看次数

Java使用Xbox控制器

您建议将我的Xbox 360控制器连接到Java,并能够将键输入作为KeyEvent读入keyPressed事件库.

所以我想要这样的东西

private class KeyInputHandler extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望所有控制器按下进入keyPressed.

如果你能为PS3控制器提供好的库,我将非常感激.

java xbox360

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

timespec相当于windows

我移植我的应用程序,以windowsunix,我已经碰壁.在我的应用程序中,我需要在几微秒内找到时间(整个应用程序在很大程度上依赖于它,因为它是一个高精度的应用程序).

以前我使用的是timespec结构,但是Windows不包含这样的东西.该命令GetTickCount不够用,因为它以毫秒为单位返回时间.我也在考虑QueryPerformanceFrequency.

有人会碰巧知道尽可能相同的东西timespec吗?

在未来,我甚至可能需要纳秒,我在Windows中搜索的任何内容都不支持.

c c++ windows datetime win32-process

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

如何在hibernate中存储LocalTime

我有一个具有变量类型的实体,LocalTime我想将其存储在数据库中.所以我有两个问题:

  1. mysql中的字段是什么数据类型?
  2. 用于实体的注释是什么?

我根本不关心约会.

mysql hibernate date localtime java-8

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

始终在区域内的顶部div

我创建了一个始终位于顶部的div

.visibleDiv, #topLeft
{
    position: fixed;
    width: 150px;
    border: solid 1px #e1e1e1;
    vertical-align: middle;
    background: #ffdab9;
    text-align: center;
}

#topLeft
{
    top: 10px;
    left: 10px;
}
Run Code Online (Sandbox Code Playgroud)

我这样显示它

<div id="topLeft">
    Top Left
</div>
Run Code Online (Sandbox Code Playgroud)

但我也有一个叫做容器的div.我希望topLeft留在该容器的左上角而不是屏幕的左上角.我对css很陌生,一直在摸索如何实现这样的效果.

所以为了更清楚地解释,我想尝试达到这个效果

______________
|Other things|
|____________|
________________________________
| TOP LEFT MESSAGE|            |
|_________________|            |
|                              |
|                              |
|         CONTAINER DIV        |
|                              |
|                              |
Run Code Online (Sandbox Code Playgroud)

当你向下滚动时,我希望topleft在容器选项卡中位于屏幕的左上角,就像这样

|__________________            |
| TOP LEFT MESSAGE|            |
|_________________|            |
|                              |
|                              |
|         CONTAINER DIV        |
|                              |
|                              | …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery css-float

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