我有一个非常大的程序,目前正在使用SWT.该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序.现在SWT有点老了我想切换到Swing或JavaFX.我想听听你对三件事的看法.
我主要担心的是桌面GUI应用程序会有什么好处?(我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据).它必须适用于Windows,Mac和一些流行的Linux发行版.
什么更干净,更容易维护?
从头开始构建什么会更快?
我在我的应用程序中使用MVC方法,如果有任何帮助的话.
假设我有一个非常长的字符串,其中包含我想要创建的参数.我知道你可以创建一个多行字符串
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多个参数的超长字符串,我怎么能在多行中传递这些参数呢?将它们传递到一行就会破坏甚至尝试创建多行字符串的目的.
感谢任何人提前获得他们的帮助和见解.
我很好奇为什么我们必须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)
并没有抱怨.
我在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:如何将上次提交后的更改移动到新的分支再没有帮助.
我有一个使用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) 我有一个有两个字段的表我希望有两个对象.
第一个只有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) 您建议将我的Xbox 360控制器连接到Java,并能够将键输入作为KeyEvent读入keyPressed事件库.
所以我想要这样的东西
private class KeyInputHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
}
}
Run Code Online (Sandbox Code Playgroud)
我希望所有控制器按下进入keyPressed.
如果你能为PS3控制器提供好的库,我将非常感激.
我移植我的应用程序,以windows
从unix
,我已经碰壁.在我的应用程序中,我需要在几微秒内找到时间(整个应用程序在很大程度上依赖于它,因为它是一个高精度的应用程序).
以前我使用的是timespec
结构,但是Windows不包含这样的东西.该命令GetTickCount
不够用,因为它以毫秒为单位返回时间.我也在考虑QueryPerformanceFrequency
.
有人会碰巧知道尽可能相同的东西timespec
吗?
在未来,我甚至可能需要纳秒,我在Windows中搜索的任何内容都不支持.
我有一个具有变量类型的实体,LocalTime
我想将其存储在数据库中.所以我有两个问题:
我根本不关心约会.
我创建了一个始终位于顶部的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) java ×5
hibernate ×2
swing ×2
asynchronous ×1
branch ×1
build.gradle ×1
c ×1
c++ ×1
css ×1
css-float ×1
date ×1
datetime ×1
git ×1
git-branch ×1
git-rebase ×1
gradle ×1
jar ×1
java-8 ×1
javafx ×1
javascript ×1
jquery ×1
localtime ×1
mysql ×1
python ×1
rebase ×1
spring-boot ×1
swingx ×1
windows ×1
xbox360 ×1