Correct clipping when calling "paint()" from thread

How do I achieve correct clipping around JMenus or JTooltips when calling paint() for a Component from a background thread?
The whole story:
Trying to implement some blinking GUI symbols (visualizing alerts), I implemented a subclass of JPanel which is linked to a Swing timer and thus receives periodic calls to its "actionPerformed()" methods.
In the "actionPerformed()" method, the symbol's state is toggled and and repainting the object should be triggered.
Unfortunately, "repaint()" has huge overhead (part of the background would need to be repainted, too) and I decided to call "paint( getGraphics() )" instead of it.
This works fine as long as there is nothing (like a JMenu, a JComboBox or a JTooltip) hiding the symbol (partially or completely). In such case the call to paint() simply "overpaints" the object.
I suppose setting a clipping region would help, but where from can I get it?
Any help welcome! (I alread spent hours in search of a solution, but I still have no idea...)

For all those interested in the topic:
It seems as if there is no reliable way to do proper clipping when calling
"paint()".
The problem was that when my sub-component called "repaint()" for itself, the underlying component's "paintComponent()" method was called as well. Painting of that component was complex and avoiding complexity by restricting
on the clipping region is not easily possible.
I have several sub-components to be repainted regularly, resulting in lots of calls to my parent component's "paintComponent()" method. This makes the
repainting of the sub-components awfully slow; the user can see each one begin painted!
Finally I decided I had to speed up the update of the parent component. I found two possible solutions:
a) Store the background of each of the sub-components in a BufferedImage:
When "paintComponent()" is called: test, if the clipping rectangle solely
contains the region of a sub-component. If this is true check if there
is a "cached" BufferedImage for this region. If not, create one, filling
it with the "real" "paintComponent()" method using the Graphic object of
the BufferedImage. Once we have such a cached image, simply copy it the
the screen (i.e. the Graphics object passed as method parameter).
b) To avoid the handling of several of such "cached" image tiles, simply
store the whole parent component's visible part ("computeVisibleRect()")
in a BufferedImage. Take care to re-allocate/re-paint this image each
time the visible part changes. (I need to restrict the image buffer to
the visible part since I use a zooming feature: Storing the whole image
would easily eat up all RAM!) In the "paintComponent()", simple check
if the currently buffered image is still valid - repaint if not -
and copy the requested part of it (clip rect) to the screen. That's it!
The whole procedure works fine.
Best regards,
Armin

Similar Messages

  • How do I separate audio channels to edit them seperatly ... they are both in the same clip when I record from two diffrent mics on two diffrent channels

    I have premier
    elements 12
    How do I separate audio channels to edit them seperatly ... they are both in the same clip when I record from two diffrent mics on two diffrent channels

    timc
    I do not see a way to separate audio channels to edit them separately in Premiere Elements (any version).
    Premiere Elements does have audio effects including Balance, Fill Right/Fill Left, and Swap channels, but that is not what you are seeking.
    I would refer you to an audio editor such as the free Audacity for what you want to do.
    Splitting and Joining Stereo Tracks - Audacity Manual
    I am not sure if this is close to what you seek
    https://forums.creativecow.net/thread/3/883383
    But, the opportunity seems to be in Premiere Pro, not Premiere Elements
    Please review and consider and then let me your thinking on the matter relating to your Premiere Elements 12 (what operating system).
    Thanks.
    ATR

  • I am receiving this error message when trying to export pictures: 'Unable to Export": An internal error has occured: Win32 API error 2 ( "The system cannot find the file specified.") when calling ShellExecuteExW from AgWorkspace.shellExecute.// I have a H

    I am receiving this error message when trying to export pictures: 'Unable to Export": An internal error has occured: Win32 API error 2 ( "The system cannot find the file specified.") when calling ShellExecuteExW from AgWorkspace.shellExecute.// I have a HP ENVY Phoenix, fully loaded, 1 1/2 years old.

    Nevermind I fixed it. Thank you.

  • Can't create DeliveryBean when call bpel from jsp

    Can't create DeliveryBean when call bpel from jsp
    /*** code ********************************/
    Properties props = new java.util.Properties();
    java.net.URL url = ClassLoader.getSystemResource("context.properties");
    props.load(url.openStream());
    Locator locator = new Locator(domain, "bpel", props);
    IDeliveryService deliveryService = (IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME);
    NormalizedMessage nm = new NormalizedMessage();
    String convId = GUIDGenerator.generateGUID();
    nm.setProperty(NormalizedMessage.CONVERSATION_ID, convId);
    nm.addPart("payload", xml);
    NormalizedMessage res = deliveryService.request(processID,operationName, nm);
    /*** code ********************************/
    This code works well in java , but when I use it in jsp on tomcat server,
    the following exception ocured:
    Can not create "ejb/collaxa/system/DeliveryBean" bean; exception reported is: "javax.naming.NameNotFoundException: Name ejb is not bound in this Context at org.apache.naming.NamingContext.lookup(NamingContext.java:768) at org.apache.naming.NamingContext.lookup(NamingContext.java:151) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:279) at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250) at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83) at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53) at workflow.bpel.BpelProcessHelper.invokeSyncBpel(BpelProcessHelper.java:54) at
    Will anyone to tell me where "ejb/collaxa/system/DeliveryBean" bean is?
    Which jar file is this class in ?
    Thanks

    did you try including bpel/lib/orabpel.jar & bpel/system/server/j2ee/ob_ejb_engine.jar in your tomcat classpath.

  • Possible thread issues when calling java from C++/Delphi/C#

    Hi,
    We have a java API for one of our applications. This API has wrapper API's in C++, Delphi and C#. There are two main top level classes in te API - Client and Receiver. Both haave a receive() method.
    We used to ship JRE1.3 with the API installation - this was needed to suport the user applications. Recently we haev moved to java 1.4 as the least suported version.
    We have two ways of using the java API in our wrapper API's.
    Method one, we instantiate the client, and call client.receive(). There are no threads etc involved here. This is working fine.
    In the second method, we set a callback on the client, which starts a thread (in C++/Delphi or C#) which calls receiver.receive() and tries to get the message. This is failing.
    It fails at a line which simply says "DocumentBuilderFactory.newInstance()".
    This call has already been made when connecting the client and it is successful because we can see the client connected.
    Whether we do client.receive() or receiver.receive() in a thread, the code passes through this line.But is throwing the exception only when we come to it through a thread.
    Any ideas on what I need to watch out for when calling methods on a JVM from a thread in C++/Delphi or C#?
    Thanks
    Hari
    PS: I know we are using some really old versions, but thats needed and out of my control.

    Hi,
    I managed to solve this - finally!
    This is what was the cause in our case - should apply to all situations though.
    We had the Xerces classes packaged in a custom jar file along with other XML stuff we have. And this mega-jar was on the class path.
    We were running everything on Java 1.3 and it worked fine.
    But Java 1.4 wrecked all havoc.
    So here is what I did:
    1. I tried explicitly doing Class.forName() with the name of the Xerces class that was not found. I did this at the same point in the code where the exception was being thrown.
    2. The class was successfully loaded indicating that it was on the class path somewhere.
    3. Java 1.4 made some changes in terms of class loaders - so suspecting that, I tried printing out the System and the Context class loaders at the point where the exception was being thrown - the system class loader was a valid object, but context class loader was null
    4. We have another point in the code base where the exact same lines were used, and these are getting successfully executed even in the multi threaded situation - this is the start up sequence.
    5. I printed the two class loaders at this point - they are both valid objects, no nulls.
    With this, I narrowed down the scope and was convinced that the class loaders are the cause.
    A search on Google and after looking the the source code for Xerces, we realized that the Xerces API uses the Context Class Loader to resolve and load the DocumentFactoryImpl class - this change is from Java 1.4 onwards.
    In our case, the JNI AttachCurrentThread method called from C++/C# and Delphi was attaching the thread to the JVM, but each time the context class loader was null.
    We could not find anything on how we could make the method to put a non null context classloader.
    So, we changed all our JNI interfaces to do the following
    //attach the current thred
    jvm->AttachCurrentThread(...)
    //now get the system class loader and set it as the context class loader on the current thread
    //get things from the Thread class
    jclass thread = get the thread class
    jmethod currentThread = get the static method currentThread()
    jobject thread_object = get the current thread object into this
    jmethod setContextClassLoader = get the setContextClassLoader() method on the thread
    //get the SystemClassLoader
    jclass clsLoader = get the class for ClassLoader
    jmethodid getSysClsLoader = get the method ID for the getSystemClassLoader() method
    jobect sysClsLoader = get the system class loader by calling the above method
    //set the context class loader on the thread by calling set context class loader with the sys class loader as the argumentUnfortunately I don't have the code with me right now,otherwise would have shared the same.

  • Getting rep-3002 when calling report from form on web

    i am getting rep-3002 when i call report from a form on web environment. Report is in character mode. It is coming proper if i change it to bitmap. but my requirement is of character mode. pl. give some solution.

    Hello,
    If you are running in WinNT/2000 environment, the NT/2000 user which runs the Report Server service must have a printer defined. In the control panel, look at the properties for the Report Server to see what user it runs as. Log in as that user and make sure a default printer is defined.
    Regards,
    The Oracle Reports Team --skw                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Getting   FRM-41029   when calling report from form

    Hi
    I have following procedure to run the report but its running fine but giving error FRM-41029 when calling the report from the form.
    runrep('MATREP,'REPSER','PDF','F:\rec\RepEnt.RDF');
    Repid := FIND_REPORT_OBJECT(repobj);
    SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE, RUNTIME);
    set_report_object_property(repid, REPORT_SERVER, repserv);
    set_report_object_property(repid, REPORT_COMM_MODE, SYNCHRONOUS);
    set_report_object_property(repid, REPORT_DESTYPE,'file');
    set_report_object_property(repid, REPORT_DESFORMAT,repfor);
    set_report_object_property(repid, REPORT_FILENAME,repfile);
    rgds
    soumya

    hi
    try something like this.
    PROCEDURE sarah ( p_report_name varchar2, vParamValue number ) is
    l_param_list  paramlist;
    l_rep_id      report_object;
    l_rep_job     varchar2(100);
    l_rep_status  varchar(100);
    BEGIN
    l_param_list := Get_parameter_List('tmp');
    IF NOT Id_Null(l_param_list ) THEN
    Destroy_parameter_List( l_param_list );
    END IF;
    l_param_list := Create_parameter_List('tmp');
    add_parameter(l_param_list ,'p_num',text_parameter,to_char( vParamValue ));
    l_rep_id := FIND_REPORT_OBJECT( p_report_name );
    if
         id_null ( l_rep_id )
    then
      msg ( 'There is no Report ' || p_report_name || ' in form ' || name_in ( 'system.current_form' ) );
      raise form_trigger_failure;
    end if;
    SET_REPORT_OBJECT_PROPERTY(l_rep_id, REPORT_COMM_MODE,SYNCHRONOUS);
    SET_REPORT_OBJECT_PROPERTY(l_rep_id, REPORT_DESTYPE,cache);
    SET_REPORT_OBJECT_PROPERTY(l_rep_id, REPORT_DESFORMAT,'PDF');
    SET_REPORT_OBJECT_PROPERTY(l_rep_id, REPORT_OTHER, 'paramform=no');
    l_rep_job := RUN_REPORT_OBJECT( l_rep_id, l_param_list );
    l_rep_status := REPORT_OBJECT_STATUS( l_rep_job );
    WHILE l_rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED')
    LOOP
    l_rep_status := report_object_status( l_rep_job );
    END LOOP;
    WEB.SHOW_DOCUMENT('http://sarah:8889/reports/rwservlet/getjobid'||substr(l_rep_job,instr(l_rep_job,'_',-1)+1) || '?server=repserver', '_blank');
    END; then u may call the procedure something like this.
    when-button-pressed trigger.
    begin
    sarah ('REPORT6', :block.item );
    end;sarah
    Edited by: S@R@h on Nov 30, 2009 9:39 PM

  • How can i reset another page when call it from a page

    I use JDeveloper 10.3 to develop my application. And I want to reset value of UI component (inputtex, selectInputDate . . .) of a page when i call it from another page.
    Thanks!

    You can execute a method in "backing bean/Application module" on page load which can set the value of the UI components. Following link can help you to
    [http://kohlivikram.blogspot.com/2008/10/call-method-on-page-load-in-adf.html|http://kohlivikram.blogspot.com/2008/10/call-method-on-page-load-in-adf.html] .
    ~Vikram

  • Getting session hang When calling Function from SQL query

    Hi All,
    I am using Oracle 8.1.7.4.0. I have a fucntion in a Package and I am calling it from the SQL query. When I am firing the query my oracle session is going to hang position and I am not able to any thing. I have to kill the session.
    But this same thing is working fine in Oracle 9.i.
    There are no out parameter and no DML, DDL and DCL statement in this fucntion.
    Could you please get back me what is the problem on it.
    Regards
    SUN

    Check why your session hangs.
    Just a few ideas:
    * Blocking locks?
    * Endless loop?
    * Performance (maybe it is just slow in orac8i and you have to wait a bit longer). Check the execution plans of the SQL statements in your function.
    * Don't use a function, but direct SQL, it is faster in both versions.

  • Error when call fmx from browser

    I have used OAS 4.0.7 with yt40.dll upgraded, NT 4.0
    SP4 and Developer 6.
    I have configured application cartridge according Developer6
    Server doc instructions.
    When I call fmx from browser Netscape 4.6
    (http://hostname/webforms?module=fmx_name) the error "Applet
    oracle.forms.engine.Main class oracle.forms.engine.Main could not
    be loaded".
    OAS inserts in file \orant\ows\website40\log the message
    "Parameter module is missing from URL and cartridge settings"
    Can anybody help me please?.
    Ruy Chicaco
    null

    Hi Adnan
    I have configured my apps similary the example in
    \orant\tools\devdem60\web then it rans fine.
    Thanks,
    Ruy Chicaco.
    Adnan Imtiaz (guest) wrote:
    : Hi there,
    : I'm facing the same problem myself...but mine goes into doing
    : something & returns an "Internal Error" message in the
    : browser....
    : Try running the static HTML file from its directory & see
    whether
    : that even runs or not....
    : Any helpp would be greatly appreciated.....
    : Thanks.
    : Ruy chicaco (guest) wrote:
    : : I have used OAS 4.0.7 with yt40.dll upgraded, NT 4.0
    : : SP4 and Developer 6.
    : : I have configured application cartridge according Developer6
    : : Server doc instructions.
    : : When I call fmx from browser Netscape 4.6
    : : (http://hostname/webforms?module=fmx_name) the error "Applet
    : : oracle.forms.engine.Main class oracle.forms.engine.Main could
    : not
    : : be loaded".
    : : OAS inserts in file \orant\ows\website40\log the message
    : : "Parameter module is missing from URL and cartridge settings"
    : : Can anybody help me please?.
    : : Ruy Chicaco
    null

  • CVI crashes when calling function from external DLL

    I'm calling a CVI library from Test Stand 4.1.  In that CVI library I load an external DLL (using LoadLibrary) and create a few function pointers (using GetProcAddress).  The DLL loads successfully, and I get addresses for all of the imported functions.  
    However, when I one of the functions is called CVI crashes (Test Stand says it lost the ActiveX connection to CVI) when executing in an external CVI instance.  If executed in the Test Stand process I get a system level exception.
    If I step through the code in CVI, it hangs after trying to step into or over the call to the function pointer from the external DLL.
    I am able to call the functions in a small test project I created in CVI, however when integrating it into an existing test library and calling it through Test Stand it fails.
    Any ideas on how to go about debugging this issue?

    Have you tried calling into the dll that CVI calls directly from TestStand?  I am curious to know if this also crashes.
    I am also curious to know if there are any path references in the dll that is called by the CVI program.  If so are they relative, or absolute paths?
    I ask because one of the possibilities is that relative paths are being used to specify a path from the location of the code that is called, and they are not working because the current working directory is being specified by TestStand, and the paths are not relative to the working directory given by TestStand.
    Jensen
    National Instruments
    Applications Engineer

  • Getting ie error when calling event from code.

    Hi all!
    I've got an application (running on 6.40 sp8, ep6 sp2) that is pretty basic by all means. Since I want to implement some way to tell the user when he/she has made an error or just to inform him/her about something, I decided to use the ConfirmationDialog.
    I've created an action called onActionShowErrorMessage in my view. This action is tied to my controller and an event defined in the controller.
    Hence, when I want to show the ConfirmationDialog to show the user an error message, I call the controller method and in the method I fire the event that my view method is looking for.
    So far so good..
    When I call my controller method from a button action in the view everything works nicely, but when I try to call it from the wdInit method it fails?! I do get the ConfirmationDialog up but I also get an IE error window telling me that IE is trying to open a page it cannot find. I have no idea why it tries to open any page at all, since there is no navigation defined for this action.
    Anyone got an idea? I couldn't find any good stuff in the system logs either
    Best regards,
    Andreas

    Hello Sam!
    Thanks for your answer! I would like to use something more of a pop thing, since i want to make sure the user sees it. The MessageManager does not work as good as it used to anymore, since it puts all messages in the bottom of the page. This page needs to be scrolled in order to see the error message..
    Anyone got an idea of a workaround? I'm reading a propsfile, and in case I'm not able to read it I want to display this to the user.
    B.R
    Andreas

  • XML Deserialization Error when calling WebService from WebDynrpo

    Hi all,
    when calling a WebService-method from my WebDynpro-application, I get the following error message:
    "Deserializing fails. Nested message: XML Deserialization Error. Can not create instance of class [com.karmann.ApplMan.dto.SoftwareKomponenteDTO] when deserializing XML type [urn:com.karmann.ApplMan.dto][SoftwareKomponenteDTO].."
    SoftwareKomponenteDTO is a class that I have implemented. It implements Serializable and overwrites the methods "equals()" and "hashcode()". It contains members of types long, String and java.sql.Date.
    The method I call needs an argument of type SoftwareKomponenteDTO. Other methods which return something of type SoftwareKomponenteDTO do not make any problems.
    The same error message appears when I test the WebService-method in the WebService-navigator. So I assume that the problem is not the way I call the method from WebDynpro.
    Thanks for help,
    Christoph

    Thanks for this hint, Amar. But this points directly to my next problem: How can I set this parameter. I know how to set flat parameters (e.g. of type long, boolean, etc.). But how can I set a parameter of a complex type?
    For example I can call
        wdContext.currentSaveElement().setIdFather(long id)
    in order to set the parameter idFather of type long for the WebService-method save(). But there is no method
         wdContext.currentSaveElement().setIdFather(SoftwareKomponenteDTO aKomp)
    Could you please help me on more time?
    Kind regards,
    Christoph

  • PLS HELP - Column value missing when calling procedure from Oracle OLEDB provider

    When calling procedure 'sp_a(?,?,?)' from SQL_PLUS and using
    DBMS.OUTPUT to print the result
    It returns a result set as
    C0, C1, C2
    But When I call the same procedure 'sp_a(?,?,?)' with same
    parameter value from MS VB6,
    It returns the a result set as
    C0, Null,C2
    The 2nd value became Null.
    Any ideas?
    Please Help.

    See http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/forms-personalization-execute-a-procedure-1778674

  • Error when calling webservice from oracle function.

    Hi,
    I am getting following error when i am trying to call webserivce from oracle function. Please can anyone suggest the required solution. Below is the error obtained.
    Thanks.
    ERROR at line 1:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00225: end-element tag "UL" does not match start-element tag "P"
    Error at line 15
    ORA-06512: at "SYS.XMLTYPE", line 54
    ORA-06512: at "SCOTT.DEMO_SOAP", line 87
    ORA-06512: at "SCOTT.WEB_SERVICE", line 17

    The error message implies that the web service is returning something that is not well formed xml. Can you verify what is being returned by the web service call

Maybe you are looking for

  • Web Report not working on a different machine

    Dear Experts, I published my bex reports in Web. Url's works fine on my machine, but if I check the same Url on any other machine it gives a message 'page cannot be displayed'. How can all the users view the reports on web? How sould I publish them?

  • Duplicate messages in sent folder in hotmail

    I am suing hotmail account on Mac/ apple Email.  All messages sent from hotmail account are shown in duplicate in Sent folder. Its frustrating to delete these messages as I have a habit of keeping Sent folder empty after transferring the required mes

  • Running out of memory on iPhone

    hi all, when my Flash app is just getting started on the iPhone 3G, it runs out of memory.  I see this in the crash report:  "Count resident pages" is "11727 (jettisoned) (active)."  How do I prevent this? If it's relevant, my app has lots of graphic

  • Send customer documents to different application

    Hello all, We have a need to send customer invoices to an external applocation via IDOCs. We need to send an invoice as soon as it is generated and also when a payment is recieved against a customer invoice for a particulat customer group. We genrate

  • Invoice date and Base line date?

    Hi My Dear Friends, Pls explain me what is baseline date and Invoice date ? Warm Regards, Hari