我正在设计一个应该在其中绘制文本的绘图程序(在 Java 中)。由于我正在使用 kinect 执行此操作,因此我想使用我已经找到的 onscreenKeyboard。这个键盘基本上就是一个 JFrame 巫婆 JComponents 在里面,我不想讲太多细节......
public MainFrame() {
super("Draw");
setLayout(new BorderLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null); //so basically some standard stuff
makeGUI();
this.keyboard = new start_vk(); //strange name for a class but I didn't make it
}
在 start_vk 中,我可以调用 setVisible(true) 并且它可以工作,但我希望稍后仅在需要时才调用它......现在我在某个地方调用 setVisible(true) 并且只有 JFrame 出现,没有组件在里面 ...
我是否应该在一个单独的线程中调用它,因为 start_vk 的构造函数是使用 SwingUtilities.invokeLater() 完成的?或者有什么其他建议?
public start_vk() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myConf = defaultConf.setDefault(myConf);
myKeys = defaultConf.setKeyboard(myKeys);
readConf();
thisClass = new vk_gui();
thisClass.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
thisClass.setVisible(true); // I've set it to true here but would like to set it to false to be able to call it later ...
}
});
}
public void newText(){
thisClass.newText();
}
public boolean isVisible(){
return thisClass.isVisible();
}
public String getText(){
return thisClass.getText();
}
vk_gui 中的代码:
public String getText(){
if (super.isVisible())
return null;
return jTextArea.getText();
}
public void newText(){
this.setVisible(true);
this.setAlwaysOnTop(true);
jTextArea.setText("");
}
这就是我当时的称呼:
keyboard.newText();
while(keyboard.getText()==null){} // I know it's busy waiting and it's not good and all that ...
text = keyboard.getText();
感谢您的任何建议,马克斯