Bug: IconUIResource doesn't paint an animated ImageIcon

I was recently playing with Icons and found that javax.swing.plaf.IconUIResource doesn't paint an ImageIcon that contains an animated GIF. Found the reason in these bug fixes.
[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4215118]
[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4215118]
From that, I could arrive at a workaround: extend ImageIcon to implement the UIResource marker interface and use this class instead of wrapping an ImageIcon in a IconUIResource. Interestingly, NetBeans autocomplete revealed the existance of sun.swing.ImageIconUIResource which I determined to be a direct subclass of ImageIcon, with two constructors that take an Image and byte[] respectively.
Test SSCCE: import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.plaf.IconUIResource;
import javax.swing.plaf.UIResource;
public class IconUIResourceBug {
  public static void main(String[] args) {
    try {
      URL imageURL = new URL("http://www.smiley-faces.org/smiley-faces/smiley-face-rabbit.gif");
      InputStream is = imageURL.openStream();
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      int n;
      byte[] data = new byte[1024];
      while ((n = is.read(data, 0, data.length)) != -1) {
        baos.write(data, 0, n);
      baos.flush();
      byte[] bytes = baos.toByteArray();
      ImageIcon imageIcon = new ImageIcon(bytes);
      Icon icon = new IconUIResource(imageIcon);
      UIManager.put("OptionPane.errorIcon", icon);
      JOptionPane.showMessageDialog(null, "javax.swing.plaf.IconUIResource", "Icon not shown",
              JOptionPane.ERROR_MESSAGE);
      icon = new ImageIconUIResource(bytes);
      UIManager.put("OptionPane.errorIcon", icon);
      JOptionPane.showMessageDialog(null, "ImageIconUIResource", "Icon shown",
              JOptionPane.ERROR_MESSAGE);
      icon = new sun.swing.ImageIconUIResource(bytes);
      UIManager.put("OptionPane.errorIcon", icon);
      JOptionPane.showMessageDialog(null, "sun.swing.ImageIconUIResource", "Icon shown",
              JOptionPane.ERROR_MESSAGE);
    } catch (MalformedURLException ex) {
      ex.printStackTrace();
    } catch (IOException ex) {
      ex.printStackTrace();
class ImageIconUIResource extends ImageIcon implements UIResource {
  public ImageIconUIResource(byte[] bytes) {
    super(bytes);
}I can't see any alternative fix for the one carried out in response to the quoted bug reports, so have held off on making a bug report. Any ideas?
Thanks for reading, Darryl
I'm also posting this to JavaRanch for wider discussion, and shall post the link here as soon as possible. I'll also keep both threads updated with all significant suggestions received.
edit [http://www.coderanch.com/t/498351/GUI/java/Bug-IconUIResource-doesn-paint-animated]
Edited by: DarrylBurke

Animated gif is working fine for me.
You can check the delay time between the images in the gif, to see that it's not too short.
Here's a simple example:import java.net.URL;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import com.sun.imageio.plugins.gif.GIFImageMetadata;
import com.sun.imageio.plugins.gif.GIFImageReader;
public class AnimatedGifTest {
    public static void main(String[] args) {
        try {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
            URL url = new URL("http://www.gifanimations.com/action/SaveImage?path=/Image/Animations/Cartoons/~TS1176984655857/Bart_Simpson_2.gif");
            frame.add(new JLabel(new ImageIcon(url)));
            frame.pack();
            frame.setVisible(true);
            // Read the delay time for the first frame in the animated gif
            GIFImageReader reader = (GIFImageReader) ImageIO.getImageReadersByFormatName("GIF").next();
            ImageInputStream iis = ImageIO.createImageInputStream(url.openStream());
            reader.setInput(iis);
            GIFImageMetadata md = (GIFImageMetadata) reader.getImageMetadata(0);           
            System.out.println("Time Delay = " + md.delayTime);
            reader.dispose();
            iis.close();
        } catch (Exception e) {e.printStackTrace();}
}

Similar Messages

  • Swing bug?: scrolling BLIT_SCROLL_MODE painting JTextArea components hangs

    java version "1.5.0_04"
    Hello,
    When drawing JComponent Text Areas and dynamically scrolling, Java gets confused, gets the shivers and freezes when the viewport cannot get its arms around the canvas. ;)
    Possible problem at JViewport.scrollRectToVisible().
    When painting non-text area components eg. graphics circles, it is ok.
    Have provided example code. This code is based on the ScrollDemo2 example provided in the Sun Java
    Tutorial
    thanks,
    Anil Philip
    juwo LLC
    Usage: run program and repeatedly click the left mouse button near right boundary to create a new JComponent node each time and to force scrolling area to increase in size to the right.
    When the first node crosses the left boundary, then the scroll pane gets confused, gets the shivers and hangs.
    The other scroll modes are a bit better - but very slow leaving the toolbar (in the oroginal application) unpainted sometimes.
    * to show possible bug when in the default BLIT_SCROLL_MODE and with JTextArea components.
    * author: Anil Philip. juwo LLC. http://juwo.com
    * Usage: run program and repeatedly click the left mouse button near right boundary to
    * create a new JComponent node each time and to force scrolling area to increase in size to the right.
    * When the first node crosses the left boundary, then the scroll pane gets confused, gets the shivers
    and hangs.
    * The other scroll modes are a bit better - but very slow leaving the toolbar (in the oroginal
    application)
    * unpainted sometimes.
    * This code is based on the ScrollDemo2 example provided in the Sun Java Tutorial (written by John
    Vella, a tutorial reader).
    import javax.swing.*;
    import javax.swing.border.EtchedBorder;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    /* ScrollDemo2WithBug.java is a 1.5 application that requires no other files. */
    public class ScrollDemo2WithBug extends JPanel {
    private Dimension area; //indicates area taken up by graphics
    private Vector circles; //coordinates used to draw graphics
    private Vector components;
    private JPanel drawingPane;
    public ScrollDemo2WithBug() {
    super(new BorderLayout());
    area = new Dimension(0, 0);
    circles = new Vector();
    components = new Vector();
    //Set up the instructions.
    JLabel instructionsLeft = new JLabel(
    "Click left mouse button to place a circle.");
    JLabel instructionsRight = new JLabel(
    "Click right mouse button to clear drawing area.");
    JPanel instructionPanel = new JPanel(new GridLayout(0, 1));
    instructionPanel.add(instructionsLeft);
    instructionPanel.add(instructionsRight);
    //Set up the drawing area.
    drawingPane = new DrawingPane();
    drawingPane.setBackground(Color.white);
    drawingPane.setPreferredSize(new Dimension(200, 200));
    //Put the drawing area in a scroll pane.
    JScrollPane scroller = new JScrollPane(drawingPane);
    // scroller.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
    if(scroller.getViewport().getScrollMode() == JViewport.BACKINGSTORE_SCROLL_MODE)
    System.out.println("BACKINGSTORE_SCROLL_MODE");
    if(scroller.getViewport().getScrollMode() == JViewport.BLIT_SCROLL_MODE)
    System.out.println("BLIT_SCROLL_MODE");
    if(scroller.getViewport().getScrollMode() == JViewport.SIMPLE_SCROLL_MODE)
    System.out.println("SIMPLE_SCROLL_MODE");
    //Lay out this demo.
    add(instructionPanel, BorderLayout.PAGE_START);
    add(scroller, BorderLayout.CENTER);
    /** The component inside the scroll pane. */
    public class DrawingPane extends JPanel implements MouseListener {
    private class VisualNode {
    int x = 0;
    int y = 0;
    int id = 0;
    public VisualNode(int id, int x, int y) {
    this.id = id;
    this.x = x;
    this.y = y;
    title.setLineWrap(true);
    title.setAlignmentY(Component.TOP_ALIGNMENT);
    titlePanel.add(new JButton("Hi!"));
    titlePanel.add(title);
    nodePanel.add(titlePanel);
    nodePanel.setBorder(BorderFactory
    .createEtchedBorder(EtchedBorder.RAISED));
    box.add(nodePanel);
    ScrollDemo2WithBug.this.drawingPane.add(box);
    Box box = Box.createVerticalBox();
    Box titlePanel = Box.createHorizontalBox();
    JTextArea title = new JTextArea(1, 10); // 1 rows x 10 cols
    Box nodePanel = Box.createVerticalBox();
    public void paintNode(Graphics g) {
    int ix = (int) x + ScrollDemo2WithBug.this.getInsets().left;
    int iy = (int) y + ScrollDemo2WithBug.this.getInsets().top;
    title.setText(id + " (" + ix + "," + iy + ") ");
    box.setBounds(ix, iy, box.getPreferredSize().width, box
    .getPreferredSize().height);
    int n = 0;
    DrawingPane() {
    this.setLayout(null);
    addMouseListener(this);
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.fill3DRect(10, 10, 25, 25, true);
    Point point;
    for (int i = 0; i < circles.size(); i++) {
    point = (Point) circles.elementAt(i);
    VisualNode node = (VisualNode) components.get(i);
    node.paintNode(g);
    //Handle mouse events.
    public void mouseReleased(MouseEvent e) {
    final int W = 100;
    final int H = 100;
    boolean changed = false;
    if (SwingUtilities.isRightMouseButton(e)) {
    //This will clear the graphic objects.
    circles.removeAllElements();
    area.width = 0;
    area.height = 0;
    changed = true;
    } else {
    int x = e.getX() - W / 2;
    int y = e.getY() - H / 2;
    if (x < 0)
    x = 0;
    if (y < 0)
    y = 0;
    Point point = new Point(x, y);
    VisualNode node = new VisualNode(circles.size(), point.x,
    point.y);
    // add(node);
    components.add(node);
    circles.addElement(point);
    drawingPane.scrollRectToVisible(new Rectangle(x, y, W, H));
    int this_width = (x + W + 2);
    if (this_width > area.width) {
    area.width = this_width;
    changed = true;
    int this_height = (y + H + 2);
    if (this_height > area.height) {
    area.height = this_height;
    changed = true;
    if (changed) {
    //Update client's preferred size because
    //the area taken up by the graphics has
    //gotten larger or smaller (if cleared).
    drawingPane.setPreferredSize(area);
    //Let the scroll pane know to update itself
    //and its scrollbars.
    drawingPane.revalidate();
    drawingPane.repaint();
    public void mouseClicked(MouseEvent e) {
    public void mouseEntered(MouseEvent e) {
    public void mouseExited(MouseEvent e) {
    public void mousePressed(MouseEvent e) {
    * Create the GUI and show it. For thread safety, this method should be
    * invoked from the event-dispatching thread.
    private static void createAndShowGUI() {
    //Make sure we have nice window decorations.
    JFrame.setDefaultLookAndFeelDecorated(true);
    //Create and set up the window.
    JFrame frame = new JFrame("ScrollDemo2");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Create and set up the content pane.
    JComponent newContentPane = new ScrollDemo2WithBug();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);
    //Display the window.
    frame.setSize(800, 600);
    frame.pack();
    frame.setVisible(true);
    public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }

    I changed the name so you can run this as-is without name clashing. It works okay now.
    import javax.swing.*;
    import javax.swing.border.EtchedBorder;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    public class SD2 extends JPanel {
        public SD2() {
            super(new BorderLayout());
            //Set up the instructions.
            JLabel instructionsLeft = new JLabel(
                    "Click left mouse button to place a circle.");
            JLabel instructionsRight = new JLabel(
                    "Click right mouse button to clear drawing area.");
            JPanel instructionPanel = new JPanel(new GridLayout(0, 1));
            instructionPanel.add(instructionsLeft);
            instructionPanel.add(instructionsRight);
            //Set up the drawing area.
            DrawingPane drawingPane = new DrawingPane(this);
            drawingPane.setBackground(Color.white);
            drawingPane.setPreferredSize(new Dimension(200, 200));
            //Put the drawing area in a scroll pane.
            JScrollPane scroller = new JScrollPane(drawingPane);
            // scroller.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
            if(scroller.getViewport().getScrollMode() == JViewport.BACKINGSTORE_SCROLL_MODE)
                System.out.println("BACKINGSTORE_SCROLL_MODE");
            if(scroller.getViewport().getScrollMode() == JViewport.BLIT_SCROLL_MODE)
                System.out.println("BLIT_SCROLL_MODE");
            if(scroller.getViewport().getScrollMode() == JViewport.SIMPLE_SCROLL_MODE)
                System.out.println("SIMPLE_SCROLL_MODE");
            //Lay out this demo.
            add(instructionPanel, BorderLayout.PAGE_START);
            add(scroller, BorderLayout.CENTER);
         * Create the GUI and show it. For thread safety, this method should be
         * invoked from the event-dispatching thread.
        private static void createAndShowGUI() {
            //Make sure we have nice window decorations.
            JFrame.setDefaultLookAndFeelDecorated(true);
            //Create and set up the window.
            JFrame frame = new JFrame("ScrollDemo2");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Create and set up the content pane.
            JComponent newContentPane = new SD2();
            newContentPane.setOpaque(true);      //content panes must be opaque
            frame.setContentPane(newContentPane);
            //Display the window.
            frame.setSize(800, 600);
            frame.pack();
            frame.setVisible(true);
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
    /** The component inside the scroll pane. */
    class DrawingPane extends JPanel implements MouseListener {
        SD2 sd2;
        private Dimension area;     //indicates area taken up by graphics
        private Vector circles;     //coordinates used to draw graphics
        private Vector components;
        int n = 0;
        final int
            W = 100,
            H = 100;
        DrawingPane(SD2 sd2) {
            this.sd2 = sd2;
            area = new Dimension(0, 0);
            circles = new Vector();
            components = new Vector();
            this.setLayout(null);
            addMouseListener(this);
         * The 'paint' method is a Container method and it passes its
         * Graphics context, g, to each of its Component children which
         * use it to draw themselves into the parent. JComponent overrides
         * this Container 'paint' method and in it calls this method in
         * addition to others - see api. So the children of DrawingPane will
         * each paint themselves. Here you can do custom painting/rendering.
         * But this is not the place to ask components to paint themselves.
         * That would get swing very confused...
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.fill3DRect(10, 10, 25, 25, true);
            g.setColor(Color.red);
            Point point;
            for (int i = 0; i < circles.size(); i++) {
                point = (Point) circles.elementAt(i);
                g.fillOval(point.x-2, point.y-2, 4, 4);
        //Handle mouse events.
        public void mousePressed(MouseEvent e) {
            if (SwingUtilities.isRightMouseButton(e)) {
                //This will clear the graphic objects.
                circles.removeAllElements();
                components.removeAllElements();
                removeAll();                    // to clear the components
                area.width = 0;
                area.height = 0;
                setPreferredSize(area);
                revalidate();
                repaint();
            } else {
                int x = e.getX() - W / 2;
                int y = e.getY() - H / 2;
                if (x < 0)
                    x = 0;
                if (y < 0)
                    y = 0;
                Point point = new Point(x, y);
                VisualNode node = new VisualNode(this, circles.size(), point.x, point.y);
                // add(node);
                components.add(node);       // not needed
                circles.addElement(point);
                checkBoundries(x, y, node);
        private void checkBoundries(int x, int y, VisualNode node) {
            boolean changed = false;
            // since we used the setPreferredSize property to set the size
            // of each box we'll have to use it again to let the JScrollPane
            // know what size we need to show all our child components
            int this_width = (x + node.box.getPreferredSize().width + 2);
            if (this_width > area.width) {
                area.width = this_width;
                changed = true;
            int this_height = (y + node.box.getPreferredSize().height + 2);
            if (this_height > area.height) {
                area.height = this_height;
                changed = true;
            if (changed) {
                //Update client's preferred size because
                //the area taken up by the graphics has
                //gotten larger or smaller (if cleared).
                setPreferredSize(area);
                scrollRectToVisible(new Rectangle(x, y, W, H));
                //Let the scroll pane know to update itself
                //and its scrollbars.
                revalidate();
            repaint();
        public void mouseReleased(MouseEvent e) { }
        public void mouseClicked(MouseEvent e)  { }
        public void mouseEntered(MouseEvent e)  { }
        public void mouseExited(MouseEvent e)   { }
    * We are adding components to DrawingPanel so there is no need to get
    * into the paint methods of DrawingPane. Components are designed to draw
    * themseleves when their parent container passes them a Graphics context
    * and asks them to paint themselves into the parent.
    class VisualNode {
        DrawingPane drawPane;
        int x;
        int y;
        int id;
        Box box;
        public VisualNode(DrawingPane dp, int id, int x, int y) {
            drawPane = dp;
            this.id = id;
            this.x = x;
            this.y = y;
            box = Box.createVerticalBox();
            Box titlePanel = Box.createHorizontalBox();
            JTextArea title = new JTextArea(1, 10);     // 1 rows x 10 cols
            Box nodePanel = Box.createVerticalBox();
            title.setLineWrap(true);
            title.setAlignmentY(Component.TOP_ALIGNMENT);
            titlePanel.add(new JButton("Hi!"));
            titlePanel.add(title);
            nodePanel.add(titlePanel);
            nodePanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
            box.add(nodePanel);
            // here we are adding a component to drawPane so there is really
            // no need to keep this VisualNode in a collection
            drawPane.add(box);
            int ix = (int) x + drawPane.getInsets().left;
            int iy = (int) y + drawPane.getInsets().top;
            title.setText(id + " (" + ix + "," + iy + ") ");
            // since we are using the preferredSize property to setBounds here
            // we'll need access to it (via box) for the scrollPane in DrawPane
            // so we expose box as a member variable
            box.setBounds(ix, iy, box.getPreferredSize().width,
                                  box.getPreferredSize().height);
    }

  • Flash Player doesn't loop internet animations

    My Flash Player doesn't loop animations that are supposed to repeat theirselves.
    It always stops at the last frame,
    but this only happens to online animations.
    Is there some feature where I could change that?
    Right-clicking and pressing ''repeat'' doesn't work either, since it doesn't even enable it.

    No, of course not.
    I have two computers,
    my old one still has the old Flash Player (I think), and the new one the new version.
    The old computer plays the animation like it's supposed to be, unlike my new one.
    That's impossible if it's missing/containing a command.

  • [BUG]: MakeWritable doesn't work for mac

    I'm trying to use oracle.jdeveloper.refactoring.util.MakeWritableHelper in my plugin, and I found it doesn't work for MAC. The byte code shows it only check the osname for "Windows" and "Linux".
    and some Jdeveloper refactoring feature failed due to can't make file writable, they may also related to this class.

    My MAC version is OSX 10.5.4.
    I don't have a stacktrace. It just fails silently.
    You can easily reproduce this bug by reformat a readonly file.
    Here is the code I reverse engineered from oracle.jdeveloper.refactoring.util.Util.java:
    public static boolean setReadOnly(java.net.URL url, boolean readOnly)
    boolean ret = false;
    java.lang.String cmdarray[] = null;
    java.lang.String platformPathName = oracle.ide.net.URLFileSystem.getPlatformPathName(url);
    java.lang.String osName = java.lang.System.getProperty("os.name", "");
    if(osName.startsWith("Windows"))
    cmdarray = (new java.lang.String[] {
    "ATTRIB", readOnly ? "+R" : "-R", (new StringBuilder()).append('"').append(platformPathName).append('"').toString()
    else
    if(platformPathName.equalsIgnoreCase("Linux"))
    cmdarray = (new java.lang.String[] {
    "chmod", readOnly ? "u-w" : "u+w", (new StringBuilder()).append('"').append(platformPathName).append('"').toString()
    if(cmdarray != null)
    java.lang.Runtime runtime = java.lang.Runtime.getRuntime();
    try
    java.lang.Process process = runtime.exec(cmdarray);
    if(process.waitFor() == 0)
    ret = (new File(platformPathName)).canWrite();
    if(ret)
    oracle.ide.model.Node node = oracle.ide.model.NodeFactory.find(url);
    if(node instanceof oracle.ide.model.TextNode)
    oracle.ide.model.TextNode textNode = (oracle.ide.model.TextNode)node;
    textNode.isReadOnly();
    catch(java.io.IOException e)
    e.printStackTrace();
    catch(java.lang.InterruptedException e)
    e.printStackTrace();
    return ret;
    }

  • ProgressDialog background doesn't paint

    I'm working on a Bridge script to copy files from my card reader into a directory structure based on EXIF data. It works (most of the time), but the progress dialog never repaints correctly, and sometimes the progress dialog and the Bridge window go completely white until the script is finished.
    I'm using the progressDialog object from AdobeLibrary1.jsx. When it doesn't go white, the status text and progress bar are updated properly, but the window background is never painted. I've tried window.show() and document.refresh() with no effect. Is there something else I should try?
    Thanks.
    Henry

    Henry,
    This is one we have to live with for now. When bridge scripting is doing anyting intensive (such as copying files), there will be repaint problems. In the Import from Camera script, we flip up a warning dialog that this will happen.
    Larry's idea was worth a try, but it didn't work for me. I've tried a bunch of other ideas as well without success.
    One way that should work, is to use BridgeTalk. Have another application (Photoshop?) actually execute the copy, and send status messages back to bridge. We didn't opt for this in the Import from Camera script as it seemed too kludgy. Users might wonder why Photoshop is starting when all they wanted to do was copy some files.
    If you want to try that - take a look at the BridgeTalkLongProcess Object in AdobeLibrary1.jsx. It allows you to execute a long running process in another app, and get progress reports back to bridge. It provides the progress dialog for you, and handles all of the messaging. All you need to do is put a function call:
    sendBackStatus( progress, message )
    in your target app script code. progress is an integer 1-100, message is what you'd like shown in the progress dialog. An example of how to use it is the Contact Sheet script.
    Good Luck
    Bob
    Adobe WAS Scripting

  • JPanel doesn't paint graphics

    Hi ! I've been writing a program that should graph a linear function, the problem is that I'm trying to draw a line in a JPanel but this doesn't work XD...The program has 2 windows. The first one is the windows from where i get data for the function, after having the data I press a button that I want to open a new window and draw the function...
    This is the part of the code in the button on the first window that certainly opens a new window
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
       JFrame frm_grafica = new JFrame("Grafica - B-Rabbit");
       frm_grafica.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       Grafica graph = new Grafica();   
       frm_grafica.getContentPane().add(graph);
       frm_grafica.setSize(250,250);
       frm_grafica.setLocation(this.getLocation().x+this.getWidth()+5, this.getLocation().y);
       frm_grafica.setVisible(true);
    }but in the new window [that is located beside the first window] this is the code, that doesn't work...yes maybe there's something i don't do or something that i am passing over..
    public class Grafica extends JPanel{
        Grafica(){
            this.setBackground(Color.WHITE);
        protected void PaintComponent(Graphics g){
            super.paint(g);
            g.setColor(Color.BLACK);
            g.drawLine(50,50, 20, 20);
    }So Hope someone helps me...

    //protected void PaintComponent(Graphics g){
    protected void paintComponent(Graphics g){//<-- it's 2.00am, small p
            //super.paint(g);
            super.paintComponent(g);

  • Bug when importing Ppt slides with animation: color changes to foam green

    Hi everyone,
    I am using Captivate 7 and I am experiencing what seems like a bug when I try to import Powerpoint slides that have animation effects and then publish the video as HTML5.
    I am using Ppt 2007 and importing the slides as .pptx files using the Import> Ppt slides command in Captivate.
    An example of Ppt slide that I need to import is this: in the slide, there are two groups, created by grouping together several objects (lines, shapes etc). One group has a fade effect applied on it, while the other group has a diagonal down right movement applied to it.
    When I import the slide in Captivate, the following happens:
    If I do not select the High fidelity check box, then the Ppt slide is imported as static, and no effect is shown in the HTML5 video, although the effect is shown in the Captivate preview.
    If I select the High fidelity check box, then the Ppt slide is imported with the effect, and with the original Ppt colors, but as soon as I press F3 to play the slide, or F4 to play the whole project, or I publish the video in HTML5 output, all the original colors change to foam green for the fill in and black for the shape outlines. Furthermore, the text boxes are displayed with their box frame displayed:
    ORIGINAL PPT IMAGE:
    RESULT AFTER CAPTIVATE IMPORT:
    I have read in the forum several posts on this issue, eg colors being changed to foam green even with static Ppt slides, and I tried to apply the suggestions, but none seems to work.
    Any help will be appreciated.

    Hi there
    As Hyperlinks don't survive the import process, perhaps try removing the links and just applying the desired color in PPT before importing into Captivate?
    Cheers... Rick
    Click here for Adobe Authorized Captivate and RoboHelp HTML Training
    Click here for the SorcerStone Blog
    Click here for RoboHelp and Captivate eBooks

  • Cubes - Painting and animating

    Hello,
    I just found this really cool flash-animation
    >here<
    and the cubes on the side (GmbH) are really nice. Has someone ever
    done something like that (unfortunately I cannot even paint the
    cubes in a good way :-( ) and has an example I could use to learn?
    Thx in advance,
    Joshi

    The cubes are actually really easy, although I dont have
    anything just
    the same, I do have a little izmo thing I did years ago. Im
    trying to
    find it for ya.
    Cheers,
    Tom
    On Sun, 11 Jun 2006 19:59:51 +0000 (UTC), "WaldemarX112"
    <[email protected]> wrote:
    >Hello,
    >
    > I just found this really cool flash-animation
    >
    http://www.microsoft.com/germany/contoso/contosoinfo_hauptfilm.swf
    and the
    >cubes on the side (GmbH) are really nice. Has someone
    ever done something like
    >that (unfortunately I cannot even paint the cubes in a
    good way :-( ) and has
    >an example I could use to learn?
    >
    > Thx in advance,
    > Joshi

  • The solution for Bug 4900349 doesn't work properly?

    Hi friends,
    I think that exists an incorrect behavior at invoices form (TSMINWKB) when we try to change of tab: once the PAYMENT_OVERVIEW_BUTTON is disabled when we change of tab page, is not possible to enable it returning to the same tab.
    Have a look at :
    tab_navigation_pkg.invoice_regions
    at
    IF (event = 'WHEN-TAB-PAGE-CHANGED') THEN....
    app_item_property.set_property('CONTROL_INV_PAY.PAYMENT_OVERVIEW_BUTTON',
                        ENABLED,PROPERTY_FALSE);
    SO.. the button is disabled but it isn't enabled again when you execute the when tab pag changed trigger...
    May be an incorrect solution for the bug?
    Any ideas? Do you have the same behavior?
    It's possible to enable the button, going to INV_SUM_FOLDER block and changing to a record with data on payment metod tab page... but.. obviously that's not the appropiate way to enable the button...
    Jose.

    Hi again, sorry , the screen is:
    APXINWKB.fmb
    Jose.

  • BUG: ICE doesn't work with includes

    If you're building a site using includes, you'll find they won't render in ICE.  See screenshot here: 2015-05-03_12-04-56.png - DevTrainer's library
    Would love to keep building in a modern, forward facing way, but the editing experience in BC for our clients is shaky enough as is.  This basically forces us to make the following choices:
    1) Stop using includes in our builds
    2) Stop using ICE, and just point our clients towards the admin page editor (terrifying)
    3) Anyone have a third?
    Is the product team aware of this bug?

    1. Not what I meant no, ICE will always have limits and considering what liquid and the includes and the possibility of how that renders, while BC is working on a newer version of the editor - You need to expect limitations, I am not sure that they will address this and the other issues it has working with liquid in this version - BC may say it never will. I do not know, but it is important to keep this in mind. ICE for me has failed on sites I have tried it way back 3/4 years ago... I have never found it effective on the sites I have to build.
    2. Sqaurespace - Especially the new one - Depends on the person, a lot of people hate the new interface. Wordpress - this is ALL down to who sets it up, I have people hate it, get a new site and love it - Because it was built well, and they were shown how to use it properly. BC is in that exact same boat. People have called, Hated their CMS - had a look and it is BC. Got a new site - Love BC.
    People really need to move on from blaming the tools, all have their faults and positive aspects, BC is far from perfect but so to for the others for different reasons. It is as good as the builder, same with anything else.
    3. The editor is buggy, it is annoying that this is the case at the moment and its not really being addressed. I honestly can not answer why, considering similar issues I have addressed using it for my projects with no real effort and other issues I have not even encountered.
    In terms of your latter point, concrete examples etc... We have, I have been to Adobe Max to talk about things, Pretty does Brass Tacks, I have written heaps of docs on the forums, I help with the BC documentation, I have said a number of times on these forums to people and linked in about training, class dropdown, teaching clients the basics of semantic content.. Our digital marketers help our clients and teach them on that side... So I do and Pretty do and always have helped others even before I came on board
    I am not saying do not use it, the simple point is - Especially with liquid and complex sites, do not be surprised if 1. It breaks , 2. BC do not address it/all of it because maybe they could but its mashing two different ends of the stick together.
    It is like some people expecting Muse to do all this amazing coding at clicks of a button.

  • Adding insult to injury.  Adobe's Wishlist / Bug reporting doesn't work.

    I sure hope Adobe is reading these forums, because I haven't been able to submit a single bug / feature request through the proper channel, and I've given up trying.  It's one thing to make is all BETA testers without warning us.  It's just fanning the flames of fury when Adobe Staff tell us to submit a bug.  It's at least implied that Adobe will not be reading / hearing the messages on this forum.  And I can't even submit a bug report because that form is broken! 
    I've spent around 24 hours so far BETA testing their software for them, so I hope they are reading these forums with gratitude for our free services.
    Unfortunately, I must get back to work, now.  No more time for BETA testing today.

    I haven't been able to submit a single bug / feature request through the proper channel,
    Since it is not mentioned in this thread:
    Copy/pasting is often the culprit when bug report/feature requests fail. The was a problem some time back when we were copy/pasting suggested text from a forum post. While it appeared there was a character limit (and there probably is), I suspected that invisible "junk" (html code or Word stuff) was being pasted. I have better luck pasting from a pure text editor. I have best luck typing it, and copying from the bug/feature form to keep a copy.
    Another thread today complained they could not post a link in a bug report. I have had no difficulty posting a link to a forum thread.
    There are of course times where web submissions fail for no good (apparent) reason. I find that very frustrating; don't get me started on Adobe forums and Jive. But as far as I know, the bug/feature system is not part of that.

  • Nimbus' TableCellRenderer for boolean doesn't paint the alternate row color

    Watch for yourself:
    import javax.swing.*;
    import javax.swing.table.*;
    public class BooleanTable implements Runnable {
         public static void main(String[] args) throws Exception {
              for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                   if ("Nimbus".equals(info.getName())) {
                        UIManager.setLookAndFeel(info.getClassName());
                        break;
              SwingUtilities.invokeLater(new BooleanTable());
         @Override
         public void run() {
              JTable table = new JTable(new Model());
              JFrame frame = new JFrame(getClass().getSimpleName());
              frame.add(new JScrollPane(table));
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.pack();
              frame.setLocationRelativeTo(null);
              frame.setVisible(true);
         static class Model extends AbstractTableModel {
              @Override
              public int getColumnCount() { return 2; }
              @Override
              public String getColumnName(int col) { return getColumnClass(col).getSimpleName(); }
              @Override
              public Class<?> getColumnClass(int col) { return col==0 ? Number.class : Boolean.class; }
              @Override
              public int getRowCount() { return 100; }
              @Override
              public Object getValueAt(int row, int col) { return col==0 ? row : row%3==0; }
    }Feature or Bug?

    clearly a bug - some shitty internal hack-on-a-hack code shooting itself in the knee ;-)
    Fought with it last year, not sure if I documented the dirtier details, though, as my concern was JXTable which potentiated the problems:
    [http://forums.java.net/jive/thread.jspa?messageID=364610&#364610]
    HTH
    Jeanette

  • [possible bug] totem doesn't scale movies

    A couple of days ago totem stopped scaling movies:= - it plays in native resolution in top left corner of the video pane. Trying to resize video fails:
    with zoom in: video moves a pixel up left with each zooming action;
    with zoom out: video moves a pixel down right, pixels below original bottom are not displayed;
    with aspect change: video switches position vertically.
    After moving video freed area isn't redrawn.
    Both reinstallation of gstreeamer plugins and find ~ -iname \*totem\* -or -iname \*gstreamer\* | xargs rm -r didn't help.
    I wanted to file a bug, but not sure, whether it could be some configuration messup in /etc.
    Playing with mplayer (both "-vo xv" and "-vo sdl") works perfectly.
    Does anyone know the possible roots of problem?
    Last edited by czarkoff (2010-01-15 07:24:28)

    A couple of days ago totem stopped scaling movies:= - it plays in native resolution in top left corner of the video pane. Trying to resize video fails:
    with zoom in: video moves a pixel up left with each zooming action;
    with zoom out: video moves a pixel down right, pixels below original bottom are not displayed;
    with aspect change: video switches position vertically.
    After moving video freed area isn't redrawn.
    Both reinstallation of gstreeamer plugins and find ~ -iname \*totem\* -or -iname \*gstreamer\* | xargs rm -r didn't help.
    I wanted to file a bug, but not sure, whether it could be some configuration messup in /etc.
    Playing with mplayer (both "-vo xv" and "-vo sdl") works perfectly.
    Does anyone know the possible roots of problem?
    Last edited by czarkoff (2010-01-15 07:24:28)

  • Safari 5.1.4: Gmail, youTube, Amazon bug [64bit doesn't help]

    I upgraded to Safari 5.1.4 yesterday morning, but I've encountered some kind of auto-refresh bug. Gmail, youTube, Amazon even Apple Support autorefresh themselves 4-5 times then come up with a "Safari cannot display this page" error. They're totally unusable, and I'm sure its just the "Tip of the iceburg"
    I've tried the 32/64bit change, but that hasn't helped, and Time Machine won't let me restore a previous version of Safari.
    I know the latest version fo Safari is causing some Gmail problems, but this isn't the same. I can see and access my email for brief seconds before the page refreshes and the cycle begins again.
    Can anyone help me? I'm not sure what else to do to fix or research this.

    Problem fixed: Tried cleaning out my extensions [again], and Disconnect is causing the crashes. Shame really, good extension.

  • [Bug] Email - Doesn't check email when it should and plays alert muliple times

    There is a bug in webOS 2.0.1 on ither a verizon or unlocked Pre 2 where the email app does not check email when it should. For example, if it is set to "as the arrive" it only checks ever 30 min.
    In addition, when emails do arrive it will play the alert tone as many times as there are new emails in the current check. For example if it checks for email and there is 4 new messages the phone tires to play the email alert ringtone 4 times at once.
    Post relates to: Pre 2 p102eww (Verizon)

    There is a bug in webOS 2.0.1 on ither a verizon or unlocked Pre 2
    where the email app does not check email when it should. For example,
    if it is set to "as the arrive" it only checks ever 30 min.
    Do you have more than one device checking the email acct?  If so, please have only the Pre2 getting that email acct using as items arrive (IDLE) and see how that fairs.  I can replicate this issue with certain mail providers if I use IDLE on more than one deivce to it.  Keep me posted.

Maybe you are looking for

  • ** Fault Message will support in JDBC Sender Adapter ?

    Hi friends, Will Fault message be supported when JDBC is receiver ? If it is, how do we raise exception, when any error comes in JDBC side ? Kind Regards, Jeg P.

  • Downloaded pdf files open in wordpad and cant be read

    after downloading some files they open up in wordpad and cant be read.they appear as some kind of code.this happens with both text and photo files.i cant seem to find another application to try open them in.  This question was solved. View Solution.

  • Oracle SQL Developer (Not seeing object names within the interface)

    Hello, I was finally able to perform an export/import from our production environment to our training environment. Anyway, this was done using the SYS account and for some reason, I have an issue where in Oracle SQL Developer, there are no object nam

  • Processor glitch

    Is a simple question. I have a KT3 Ultra2 series mb with a via kt333 chip series. I am running an Athlon xp2400 cpu on Windows XP. The infoview reports the processor to be only an xp1800+. How and where do i fix this??????? (I am bios friendly) thanx

  • Default Photo Opener

    How do I set iPhoto as my default photo opener?