我的理解是,如果我启动另一个线程来执行某些操作,我需要SwingUtilities.invokeAndWait或SwingUtilities.invokeLater在我所说的线程中更新GUI.如果我错了,请纠正我.
我想要完成的是相对简单的:当用户点击提交时,我想(在执行任何操作之前)禁用提交按钮,执行操作,并在操作结束时重新启用按钮.我的执行操作的方法在返回结果时直接更新GUI(显示结果).
此操作基本上查询服务器并返回一些结果.
到目前为止我所拥有的是:
boolean isRunning = false;
synchronized handleButtonClick() {
if ( isRunning == false ) {
button.setEnabled( false );
isRunning = true;
doAction();
}
}
doAction() {
new Thread() {
try {
performAction(); // Concern A
} catch ( ... ) {
displayStackTrace( ... ); // Concern B
} finally {
SwingUtilities.invokeLater ( /* simple Runnable to enable button */ );
isRunning = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于我上面的两个问题,我是否必须使用,SwingUtilities.invokeAndWait因为它们都会更新GUI?所有GUI更新都围绕更新JTextPane.我是否需要在我的线程中检查我是否在EDT上,如果是,我可以调用我的代码(无论是否更新GUI)并且不使用SwingUtilities.invokeAndWait? …
我有两节课A,和B.类B重写了类的foo方法A.Class B有一个bar方法,我想调用foo超类的方法.这种电话的语法是什么?
class A
def foo
"hello"
end
end
class B < A
def foo
super + " world"
end
def bar
# how to call the `foo` method of the super class?
# something similar to
super.foo
end
end
Run Code Online (Sandbox Code Playgroud)
对于类方法,我可以通过显式地为类名添加前缀来在继承链上调用方法.我想知道是否有类似的习惯用法.
class P
def self.x
"x"
end
end
class Q < P
def self.x
super + " x"
end
def self.y
P.x
end
end
Run Code Online (Sandbox Code Playgroud)
编辑 …
如何在mac上通过命令行添加启动项?从谷歌搜索,我知道你必须编辑~/Library/Preferences/com.apple.loginitems.plist使用, defaults write com.apple.loginitems [key] [value]但我不确定要编辑的确切内容.
我们正在试驾Mercurial.我们不希望每次与存储库交互时都输入我们的用户/传递,因此我们设置了mercurial_keyring扩展.我们:
然后在该[auth]部分对%userprofile%/ mercurial.ini进行了适当的更改.它在我的同事的计算机(32位xp sp3)上工作正常,但它在我的机器上不起作用(Windows 7 Ultimate x64).另外值得注意的是,必须在Win 7 x64上从源代码构建setuptools(python setup.py bdist_wininst然后运行生成的setuptools-0.6c11.win-amd64.exe).
仅使用Mercurial 1.5二进制安装(.msi)中的hg.exe,运行hg.exe时出现此错误:
***无法导入扩展名mercurial_keyring:没有名为mercurial_keyring的模块
我试图改变我的mercurial.ini,指定mercurial_keyring.py文件的路径,而不是让mercurial找到它(因为它在PYTHONPATH中).
旧:
[extensions]
mercurial_keyring =
Run Code Online (Sandbox Code Playgroud)
新:
[extensions] mercurial_keyring =
c:/mercurial/extensions/mercurial_keyring.py
Run Code Online (Sandbox Code Playgroud)
错误更改为:
abort:无法导入模块密钥环!
因此,在提供mercurial_keyring扩展的路径时,仍然无法找到依赖密钥环模块.
经过进一步调查,似乎NO扩展工作.他们都产生错误:
***无法导入扩展名[扩展名]:没有名为[模块名称]的模块
看来,当运行hg.exe时,它不知道PYTHONPATH.我试过了:
什么都行不通.我最接近的是从源代码构建时使用hg.py. 它至少不会给我错误,并且当我输入我的凭据时实际创建%userprofile%/ wincrypto_pass.cfg.但是在后续请求中,它不会自动输入凭据.它再次提示我.
有趣的是,TortoiseHG 正在使用密钥环.我无法让它在命令行上运行.我认为Win 7 x64正在发生一些阻止mercurial(hg.exe)看到PYTHONPATH的事情,因此无法找到任何已安装的模块.
有没有人在Win 7 x64上有扩展功能?具体用二进制安装mercurial(不是hg.py)?
更新 我现在找到了合适的工作.由于TortoiseHG 不会与mercurial_keyring工作,我只是改变了我的PATH设置为包括tortoiseHG文件夹,而不是C:\善变.现在当我在命令行输入"hg"时,它正在使用tortoiseHG文件夹中的hg.exe,它可以正常工作.同样,这仍然是Win 7 x64上的mercurial扩展的问题.答案欢迎.
我设计了框架的数据访问部分,以便每次业务对象(BO)需要与数据库交互时,都必须打开连接,调用数据访问层(执行查询),然后关闭连接.然后,如果需要在事务中运行,它将打开连接,开始事务,调用数据访问层(执行查询),然后提交事务,关闭事务,最后关闭连接.
我这样做的方式是"开放晚,早关闭" ...但是如果我需要调用其他BO在单个交易中提交数据怎么办?有没有更好的方法来处理打开和关闭连接以及处理事务?
我是设计应用程序架构的新手,所以我希望我不会错误地做这个......任何帮助都是值得赞赏的.
我试图在 cygwin 下使用 git-svn 将本地 SVN 存储库转换为 git,但失败了。发生的情况是这样的:
$ git svn init -t tags -b branches -T trunk file:///cygdrive/e/repository/project
init: command returned error: 127
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在Xcode中开发了一个基于视图的项目.它在iPhone模拟器中成功运行.但我想在真正的iPhone设备上测试这个项目来检查应用程序的行为.有没有办法在不购买Apple Developer's License的情况下在iPhone设备上测试我的应用程序?提前致谢.
我继承了JavaScript代码,其中Ajax处理程序的成功回调启动另一个Ajax调用,其中成功回调可能会也可能不会启动另一个Ajax调用.这导致了深层嵌套的匿名函数.也许有一个聪明的编程模式,避免深度嵌套,更干.此外,还存在整个函数中使用的内部变量myVar1和myVar2的问题.
jQuery.extend(Application.Model.prototype, {
process: function() {
var myVar1;
// processing using myVar1;
jQuery.ajax({
url:myurl1,
dataType:'json',
success:function(data) {
var myVar2;
// process data using myVar1, set state of myVar2,
// then send it back
jQuery.ajax({
url:myurl2,
dataType:'json',
success:function(data) {
// do stuff with myVar1 and myVar2
if(!data.ok) {
jQuery.ajax({
url:myurl2,
dataType:'json',
success:mycallback
});
}
else {
mycallback(data);
}
}
});
}
});
}
});
Run Code Online (Sandbox Code Playgroud) 我创建了一个Hello World应用程序,系统生成了下面的大部分Android语言.在没有System.out语句的情况下运行应用程序时,模拟器中没有显示"Hello".然后,使用Eclipse教程,我读到我可以将System.out.println语句添加到main.应用程序再次运行,但没有输出.
我在这里不理解什么?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
System.out.println =" Hello world!"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) .net ×1
ado.net ×1
ajax ×1
android ×1
callback ×1
cocoa-touch ×1
command-line ×1
connection ×1
cygwin ×1
git-svn ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
macos ×1
mercurial ×1
ruby ×1
simulator ×1
startup ×1
svn ×1
swing ×1
tortoisehg ×1
transactions ×1
windows-7 ×1
xcode ×1