【发布时间】:2013-05-31 15:36:39
【问题描述】:
我试图解决这个问题好几天了。我的程序编辑图像。 我没有使用多线程。
我正在使用在 JTextPane 中写入格式化文本的函数(private void console())。 我有一个名为 ImageWork() 的类,它适用于我的图片。
我的问题:我首先调用 console("start with work") 函数,然后我调用
我的班级编辑图像的功能(需要一些时间)。然后我再次调用了我的控制台(“完成”)函数。我已经尝试了很多方法来编辑图像的方法等到控制台功能准备好但没有成功:(。
所以每次我首先调用 3 个函数时,图像都会被编辑,然后控制台函数会在我的文本窗格中写入两个文本。
private void color2gray()
{
console("start")
try
{
myImg.color2gray();
console("success");
repaint();
}
catch (Exception e)
{
console("no success");
}
程序运行良好。我的问题是我希望我的控制台 (JtextPane) 中的文本现在启动该函数,然后启动 color2gray 函数,因为该函数可能需要一分钟来处理大图片。
我已经尝试过将控制台返回类型更改为布尔值并调用它:
while (!(console("start")) {};
如果有人能解决这个问题,我会很高兴。谢谢
console() 代码:
private void console(String str,boolean fehler)
{
time=new GregorianCalendar();
String help=time.getTime().toString();
help=help.substring(0,19);
doc = (StyledDocument) console.getDocument();
Style style = doc.addStyle("StyleName", null);
StyleConstants.setForeground(style, Color.black);
try { doc.insertString(doc.getLength(),help, style); }
catch (BadLocationException e) { e.printStackTrace(); }
if (fehler) StyleConstants.setForeground(style, Color.red);
else StyleConstants.setForeground(style, new Color(0,125,0));
try { doc.insertString(doc.getLength()," : "+str+"\n", style); }
catch (BadLocationException e1) { e1.printStackTrace(); }
}
【问题讨论】:
-
对不起,我不明白你的问题是什么。请编辑您的帖子以使其更清晰。
-
我们需要查看更多代码。
-
好吧,我试着说清楚
-
会发生什么?您是否遇到异常或程序永远不会退出?
-
不知道这有多相关,但您首先说您没有使用多线程 - 但 Swing 框架是多线程的......请参阅docs.oracle.com/javase/tutorial/uiswing/concurrency
标签: java multithreading swing wait jtextpane