Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #31667
| Path | csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Knute Johnson <nospam@rabbitbrush.frazmtn.com> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Animations with jTextPane |
| Date | Sun, 10 May 2015 10:28:48 -0700 |
| Organization | A noiseless patient Spider |
| Lines | 141 |
| Message-ID | <mio4ee$gnm$1@dont-email.me> (permalink) |
| References | <aabd37b8-2013-4bcb-abef-c787b5c92640@googlegroups.com> <minr3t$aua$1@dont-email.me> <641b695c-da1e-47d7-95a0-554df722e433@googlegroups.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=windows-1252; format=flowed |
| Content-Transfer-Encoding | 8bit |
| Injection-Date | Sun, 10 May 2015 17:27:43 +0000 (UTC) |
| Injection-Info | mx02.eternal-september.org; posting-host="9b3fcb0d22708969e4dc99e7aa0ef1f9"; logging-data="17142"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19VyZiNoYoE0sTQX4sJsOvU" |
| User-Agent | Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 |
| In-Reply-To | <641b695c-da1e-47d7-95a0-554df722e433@googlegroups.com> |
| Cancel-Lock | sha1:QPT6agKfJB4ImXhFHkwTEFP+k24= |
| Xref | csiph.com comp.lang.java.programmer:31667 |
Show key headers only | View raw
So my idea may not work so good. I tried a little experiment where I
used some photos from my website and create simple HTML pages and then
loaded them one after another into the JTextPane with setPage(). I get
the flashy too. You can try my test code below. The double buffering
had no effect on the flashing.
It may be easier to put the images in their own component where you can
control the drawing better.
I'll leave the HTML up for a couple of days.
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;
public class test3 extends JTextPane implements Runnable {
public test3() throws IOException {
setPage("http://lonejuniper.com/0.html");
setDoubleBuffered(true);
System.out.println(isDoubleBuffered());
}
public void run() {
int i = 0;
try {
while (true) {
Thread.sleep(1000);
int n = i;
EventQueue.invokeLater(() -> {
try {
setPage(String.format(
"http://lonejuniper.com/%d.html",n));
} catch (IOException ioe) {
ioe.printStackTrace();
}
});
if (++i == 24)
i = 0;
}
} catch (InterruptedException ie) {
System.out.println("program stopping");
}
}
public static void main(String... args) {
EventQueue.invokeLater(() -> {
try {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test3 t3 = new test3();
f.add(t3,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
new Thread(t3).start();
} catch (IOException ioe) {
ioe.printStackTrace();
}
});
}
}
On 5/10/2015 08:08, H.L@operamail.com wrote:
>
> Thank you for helping me with this. We have not tried this, but
> please note that we are continouusly changing what image is shown.
> The web cam captures a new image and this is shown on the screen, how
> could we do this updating with setDocument()?
>
>
> Den søndag den 10. maj 2015 kl. 16.49.42 UTC+2 skrev Knute Johnson:
>> On 5/10/2015 02:57, H.L@operamail.com wrote:
>>>
>>> Hey
>>>
>>> We are using OpenCV to grab images from the web cam. The idea is
>>> to show the feed in a jTextPane when the user selects to show
>>> feed, otherwise other stuff can be shown in the pane. This pane
>>> is in a JFrame with lots of other swing objects.
>>>
>>> Basic functionality:
>>>
>>> IplImage grabbedImage = opencv_highgui.cvQueryFrame(capture);
>>> while ((grabbedImage = opencv_highgui.cvQueryFrame(capture))
>>> !=null) jTextPane1.insertIcon(new
>>> ImageIcon(grabbedImage.getBufferedImage()));
>>>
>>>
>>> Now, we get problems because this shows multiple video frames.
>>> Obviously, it keeps inserting a new image, so they will be placed
>>> on top of each other.
>>>
>>> We tried to clear the pane and then repaint by doing like this
>>> instead:
>>>
>>> this.removeIcon(); jTextPane1.repaint();
>>> jTextPane1.insertIcon(new
>>> ImageIcon(grabbedImage.getBufferedImage()));
>>>
>>> Where removeIcon looks as can be seen below:
>>>
>>> But now, it gets flashy, the user can clearly see how the pane is
>>> cleared and then repainted, just a flashy slow change of images.
>>>
>>> So is there any way to get around both of these issues?
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> private void removeIcon() { for (int i=0;
>>> i<jTextpane1.getStyledDocument().getLength(); i++) { Element
>>> element = jTextPane1.getStyledDocument().getCharacterElement(i);
>>> AttributeSet attributeSet = element.getAttributes(); Icon icon =
>>> StyleConstants.getIcon(attributeSet); if (icon != null) { try {
>>>
>>> jTextPane1.getStyledDocument().remove(i, 1);
>>> jTextPane1pane.getStyledDocument().insertString(i, " ", new
>>> SimpleAttributeSet()); icon = null; } catch (Exception exc) {
>>> System.out.println("Exception : " + exc.getMessage()); } } } }
>>>
>>>
>>>
>>
>> Have you tried just putting the image in a StyledDocument and
>> using setDocument()?
>>
>> --
>>
>> Knute Johnson
>
--
Knute Johnson
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Animations with jTextPane H.L@operamail.com - 2015-05-10 02:57 -0700
Re: Animations with jTextPane Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-05-10 07:49 -0700
Re: Animations with jTextPane H.L@operamail.com - 2015-05-10 08:08 -0700
Re: Animations with jTextPane Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-05-10 08:54 -0700
Re: Animations with jTextPane Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-05-10 10:28 -0700
Re: Animations with jTextPane H.L@operamail.com - 2015-05-10 13:28 -0700
Re: Animations with jTextPane Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-05-10 14:17 -0700
csiph-web