我已经看到了这个问题的其他答案和黑客,但似乎没有人完全按照我的意思去做.
基本上,我是在一个JWindow之后,它的背景是半透明的,但窗口本身的内容(按钮,文本等)是不透明的.到目前为止我看到的方法分为两类:
我要求的是可能的,如果是这样,它会怎么做?如果没有,Java 7是否会提供任何方法来使这更容易/可能?我知道它为形状窗户提供了更多支持,所以我想知道是否有什么东西可以解决这个问题.我一直在寻找一段时间,但没有运气.
从在线笔记中,我阅读了以下用于反转字符串的java代码片段,据称该字符串具有二次时间复杂度.在我看来,我的"for"循环只是迭代s的整个长度.它是如何导致二次时间复杂度的?
public static String reverse(String s)
{
String rev = new String();
for (int i = (s.length()-1); i>=0; i--) {
rev = rev.append(s.charAt(i));
}
return rev.toString();
}
Run Code Online (Sandbox Code Playgroud) 我写了一个JWindow,它在我的应用程序中有点像一个奇特的菜单,当按下按钮时弹出.但是,如果用户点击主窗口中的任何位置,我希望它消失.我当然可以在主窗口中添加一个鼠标监听器,但是它不会将它添加到窗口本身的所有组件上,并且循环遍历所有组件看起来像是一个暴力解决方案(并且不能是如果窗口上的组件发生变化,保证可以正常工作.)
做这样的事情最好的方法是什么?
我正在用Java编写游戏.哦,不知道,我有性能问题.我对油漆本身进行了基准测试 - 在3毫秒的顶部进行了1000次循环.游戏逻辑甚至低于这个.到现在为止还挺好.但我仍然遇到一个烦人的滞后:滚动时,缩放时,点击时.当我放大并放置更多物体时,问题变得更糟.但是仍然 - 即使我将绘画循环1000次,滞后也大致相同,所以不能这样.我尝试将循环放在一个任务中 - 仍然是相同的.我试图在涂料之间暂停任务 - 仍然是一样的.动画像丝绸一样平滑(因为帧速率稳定且高,这是有道理的).那么我究竟如何有条不紊地组织投入呢?把它们全部放在一个单独的线程中?任何输入都会非常感激!
我的应用程序没有错误,警告或内存泄漏,在模拟器上运行完美,但我的iPhone 4上运行iOS 5的黑屏.这SIGABRT是在主线上发生的:
int retVal = UIApplicationMain(argc, argv, nil, nil);
Run Code Online (Sandbox Code Playgroud)
由于我的代码似乎没问题,有没有人知道什么样的东西一般会导致这种行为?
我还能在哪里寻找可能的错误?SIGABRT我得到的所有参考文献都是汇编... 0.o
编辑: 调试器的输出:
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys000
sharedlibrary apply-load-rules all
target remote-mobile /tmp/.XcodeGDBRemote-4281-83
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
[Switching to process 7171 thread 0x1c03]
[Switching to process 7171 thread 0x1c03]
Couldn't register BearNun.Stack-Meet-App with the bootstrap server. Error: unknown error code.
This generally means that another instance of this …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
newSymbolTextBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
System.out.println("foo =" + KeyCodes.KEY_ENTER);
System.out.println("bar =" + event.getCharCode());
}
});
Run Code Online (Sandbox Code Playgroud)
当我按下ENTER时,我得到这个输出:
foo =13
bar =
Run Code Online (Sandbox Code Playgroud)
之后我期待一个价值bar =.任何的想法?
我正在使用Java Netbeans GUI Builder来制作GUI.我想给按钮一个透明(有光泽)的外观.我正在使用
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Run Code Online (Sandbox Code Playgroud)
这也给了GUI很好的外观,但按钮仍然是相同的无聊按钮.
那么,如何给按钮一个透明的外观呢?
我想从散列图中检索k,v对.这些托管是这样的:
a = 3,4
b = 5,6
Run Code Online (Sandbox Code Playgroud)
等等.我需要这些值的组合.
a=3, b=5.
a=3, b=6.
a=4, b=5.
a=4, b=6.
Run Code Online (Sandbox Code Playgroud)
我不知道有多少个键和多少个值.使用entryset我可以得到值而不是组合.它看起来像递归,但如何?
这是我的代码:
HashMap<String, String[]> map = new HashMap<String, String[]>();
BufferedReader file = new BufferedReader(new FileReader("test.txt"));
String str;
while ((str = file.readLine()) != null) {
... logic
map.put(key, value);
}
System.out.println("number of keys: " + map.size());
for(Entry<String, String[]> entry : map.entrySet()) {
for(String value : entry.getValue()) {
System.out.println(entry.getKey() + ": " + value);
}
}
file.close();
Run Code Online (Sandbox Code Playgroud) 作为我写的应用程序的一部分,我需要将旧的(重量级)Canvas与swing组件混合 - 特别是将它们嵌套在JSplitPane中.但是,当我这样做时,分隔符拒绝在任何地方调整大小,好像两个画布都不会接受缩小尺寸.因此,证明该问题的代码如下:
JFrame frame = new JFrame();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Canvas(), new Canvas());
pane.setResizeWeight(0.5);
frame.add(pane);
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
我最初认为这是一个很容易解决的问题,但是在做了一些研究后,选项似乎表现为:
有没有更好的方法呢?或者它真的只是诉诸黑客的情况?我已经讨论了其他选项,例如,如果可用的替代SplitPane实现可行,但是没有重量级实现,如果轻量级实现避免问题,我会感到惊讶.
我正在使用 BoxLayout 并动态地从中删除组件,如下所示:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
final JLabel l = new JLabel("remove");
frame.add(l);
frame.add(new JLabel("Hello2"));
frame.add(new JLabel("Hello3"));
frame.pack();
frame.setVisible(true);
new Thread() {
public void run() {
Utils.sleep(1000);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.remove(l);
frame.repaint();
}
});
}
}.start();
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,这样做时,即使有问题的标签已从布局中删除,其他组件也不会向上移动以覆盖其空间,直到我调整框架大小。我尝试在移除组件后重新绘制框架,但没有运气 - 标签不再显示,但仍然存在原来的间隙。
除了每次删除组件时自动调整窗口大小的明显可怕的困境之外,我如何获得所需的行为?
java ×9
swing ×5
awt ×2
algorithm ×1
boxlayout ×1
canvas ×1
crash ×1
gwt ×1
hashmap ×1
ios5 ×1
iphone ×1
jsplitpane ×1
lag ×1
mouseevent ×1
netbeans ×1
objective-c ×1
recursion ×1
string ×1
translucency ×1
transparency ×1
xcode ×1