日期:2014-05-20  浏览次数:20743 次

程序等待输入的问题,这是问第二遍了!谢谢了
比如:FileChooser aa=new JFileChooser();  
  int option=aa.showOpenDialog(this);//程序在这里就停下来,等待你的操作;  
  ..................//上面只要操作不结束,这里的代码就不会被执行 

现在我想实现在JFrame的main函数里面加载一个JPanel bb;在bb里面有2个按钮,一些文本框。  
假设main() 
{  
  this.add(bb);//这时候面板出来,我想程序想上面那样停下来等待,等待面板里面对按钮的操作  
  ..............//这里的代码,我想在等上面的bb面板的操作结束才执行  

请问怎么实现?谢谢了

------解决方案--------------------
这个功能很简单,以下是我以前搞的一个例子:

package PDFupload;

import java.io.File;
import javax.swing.JFileChooser;

public class openSourceAction 
{
static final String newline = "\n";

public static void openDialog()
{
final int returnVal = doWithFrame.getFc().showOpenDialog(doWithFrame.getFrame());

if (returnVal == JFileChooser.CANCEL_OPTION) 
{
return;
}
if(returnVal == JFileChooser.APPROVE_OPTION) 
{
File file = null;
file = doWithFrame.getFc().getSelectedFile(); 
doWithFrame.getContent().append("打开目录: " + file.getAbsolutePath() + "." + newline);
contentContainer.setSrcDir(file.getAbsolutePath());
}
if(!contentContainer.getBookInfoProportey()) 
{
doWithFrame.getContent().append("读取目录的属性文件失败!" + newline);
}
else 
{
doWithFrame.getSaveSourceButton().setEnabled(true); 
// update.setEnabled(true);
doWithFrame.getProgressBar().setValue(0);


public static void openSave()
{
final int returnVal = doWithFrame.getFc().showOpenDialog(doWithFrame.getFrame());

if (returnVal == JFileChooser.CANCEL_OPTION) 
{
return;
}
if (returnVal == JFileChooser.APPROVE_OPTION) 
{
File file = null;
file = doWithFrame.getFc().getSelectedFile();
doWithFrame.getContent().append("您选择的保存目录: " + file.getAbsolutePath() + "." + newline);
contentContainer.setSaveDir(file.getAbsolutePath());
doWithFrame.getOpenButton().setEnabled(false);
doWithFrame.getUploadButton().setEnabled(true); 
}
}

}






个人认为你还是得学会看jdk文档,不然很难有所进步。
好好学习,天天向上。
------解决方案--------------------
你可以先创建一条线程,此线程包含你要控制运行的代码.然后给BUTTON加一个LISTNER.在ACTIONFORMED中实现这条线程,这样你就可以用BUTTON控制那段代码了
------解决方案--------------------
假设main()
{
//这里新起线程显示面板并负责唤醒此线程
this.add(bb);//这时候面板出来,我想程序想上面那样停下来等待,等待面板里面对按钮的操作
Thread.currentThread().interrupt();

..............//这里的代码,我想在等上面的bb面板的操作结束才执行
}

------解决方案--------------------
呵...
------解决方案--------------------
其实要达到你的目的,最简单的方法是:在你的窗口的构造方法里,就到 this.add(bb);为止,然后,你在你面板的面板上定义它最后(完成其他事情之后)触发一个事件,在事件处理方法里再做你窗口里需要做的后面的事情。