Problems with getting size of components...

I have a JApplet. After setting up the GUI in the init() method I call getWidth() and getHeight() methods (also in the init() method) of a JPanel I have placed in the contentPane of that applet. Problem is that I get different values of the height and width in the init() method than when I do the same calls on the same panel inside the actionPerformed (for a JButton). What is up with this?
Here is basically what the code looks like (leaving out some details):
public class Blah extends JApplet implements actionListener {
JPanel panel;
public void init() {
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
panel = new JPanel();
contentPane.add(panel, "Center");
JButton button = new JButton("Click me!", "South");
button.addActionListener(this);
contentPane.add(button);
//tried putting a repaint() here...doesn't help.
System.out.println(panel.getWidth() + ", " + panel.getHeight()) // (1)
public void actionPerformed(ActionEvent e) {
System.out.println(panel.getWidth() + ", " + panel.getHeight()) // different height than what I got in (1)!!!
Now, I guess I am doing something where it shouldn't be done - that Java hasn't determined exactly yet how the GUI is going to be laid out yet so some times I get differnt values from the two println's. This is driving me nuts. Could someone tell me what's the right thing to do here? Thanks in advance!

Yeah, I got it to work by moving the getWidth(), getHeight calls out of init() (where my gui was being set up) and into start().
"Every part of an GUI you are creating in a method will be validated at the moment the method is left. So you can not obtain the correct values for heigth and width inside the the creational-method."
Is this specific to the Applet's init() method or also true for applications? If not then what mechanism can we use in the case of applications to ensure that the GUI has been validated before we start trying to do getWidth(), getHeight(), etc, on them?
Thanks for you help.

Similar Messages

  • Problem with getting resized image's bytes

    I've got a problem with getting correct bytes of a newly resized image. The flow is that I retrive an image from the filesystem. Due to the fact that it is large I resize it to a 50x50px thumbnail. I can display this thumbnail in #benchmark1 (see code below). Unfortunately something's wrong with my imageToBytes funtion which returns reasonably small size of image but is totally useless - I can't make an image of it anymore so at #benchmark2 the application either crashes or keeps freezing. I saved this byte array on my disk and tried to preview under Windows how does it look but I got a message "Preview unavailabe". I did some digging in the Internet and I supposed that it's because I don't use any jpg or png encoders to save the file. Actually I think that it's not the case, as the bytes returned from method imageToBytes look weird - I cannot even make a new image of them and display it without any saving in memory.
                                  byte[] bytes = FileHandler.readFile (
                                          FileHandler.PHOTOS_PATH, fileName);
                                  Image img2 = Image.createImage (bytes, 0, bytes.length);
                                  img2 = ImageHandler.getInstance ().resize (img2);
                                                    //#benchmark1
                                  bytes = ImageUtils.imageToBytes (img2);
                                  img2 = Image.createImage (bytes, 0, bytes.length);
                                                    //#benchmark2my imageToBytes function is as follows:
         public static byte[] imageToBytes (Image img)
              int[] imgRgbData = new int[img.getWidth () * img.getHeight ()];
              byte[] imageData = null;
              try
                   img.getRGB (imgRgbData, 0, img.getWidth (), 0, 0, img.getWidth (),
                           img.getHeight ());
              catch (Exception e)
              ByteArrayOutputStream baos = new ByteArrayOutputStream ();
              DataOutputStream dos = new DataOutputStream (baos);
              try
                   for (int i = 0; i < imgRgbData.length; i++)
                        dos.writeInt (imgRgbData);
                   imageData = baos.toByteArray ();
                   baos.close ();
                   dos.close ();
              catch (Exception e)
              return imageData;
    I've run totally out of any idea what's wrong, please help!
    Edited by: crawlie on Jul 17, 2010 6:21 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hey Crawlie,
    Please note that simply writing int values into ByteArrayOutputStream will not suffice. Please have a look at the following conversion from int pixel value into byte[4]:
    public static final byte[] intToByteArray(int value) {
            return new byte[] {
                    (byte)(value >>> 24),
                    (byte)(value >>> 16),
                    (byte)(value >>> 8),
                    (byte)value
    }Good Luck!
    Daniel

  • Problem with font size, not showing up as expected.

    I've been wrestling with this for a few weeks now, but surely must be getting closer to having it resolved. It's just a problem with font size on just this one page.
    http://www.kgngroup.net/logos_and_packaging.html
    I want the body text to be 10px, but after two weeks, have played with every conceivable way, altering body font size in CSS and in the document itself. I've viewing it in Safari but others on Windows machines tell me that it is out of whack also.
    My main problem is that I can change the font size to extremes but it still shows up as the same size in the browser (about 12px.) I know changes can be made because I can modify the wording and that does change online. It's just a problem with the font size. Oh, and in the third column, the one to the right, in Dreamweaver, the font looks like it is miniscule, cannot even be read, but in the browser, since the style11 is applied, all three columns look equal size.
    Not sure where to go from here. I just want to get the body font down to 10 pixels.
    TIA,
    Ken

    John Waller wrote:
    I guess this a follow up to your earlier thread
    http://forums.adobe.com/message/3627681
    What would really help you in diagnosing issues such as this is to install the Firebug add-in for Firefox (as suggested in the earlier thread).
    Firebug shows you visually what CSS rules apply to whatever element you click on the screen.
    In this case, you have a confusion of CSS font sizes cascading on top of each other and that's confused again by mixing units for no real reason. .style11 is unnecessarily applied to lots of individual <p> tags. Remove those classes and delete the rule.
    e.g.
    The tiny font in the RHS column is affected first by
    .style8 {
    font-size: 0.5em;
    affecting the <td> then by
    .style11 {font-size: 75%}
    affecting the <p> tag.
    End result = tiny text (approx 2px).
    In these cases of mass confusion, my approach is to strip out all font sizing from the CSS and start over.
    Avoid %. Use px.
    Apply font sizing rules logically starting from the <body> tag downwards.
    That'll give you a solid baseline without weird effects.
    Ah, I find your answer worth repeating.
    Very cool that you have diagnosed so well and spelled it out here.
    I will get the Firefox add-on you mention, plus, print out this response and follow it like a recipe.
    It makes perfect sense and you have saved me from the 'clutter' of being wound up in too many directions with this because I could not make all of the connections that you have done here. I appreciate your help very much.
    Thank You,
    Ken

  • I still have problems with getting my website online. I have defined my server. Then I did the test and there was a connection via FTP. I put my files on the external server and there is a connection with the external server. But when I check to see my we

    I still have problems with getting my website online. I have defined my server. Then I did the test and there was a connection via FTP. I put my files on the external server and there is a connection with the external server. But when I check to see my website online (with Firefox, Explorer, Chrome browser) I always get the message 'Forbidden, You don't have permission to access / on this server.' Can somebody help me please? I have to get my website online..Thank you!

    Hello Els,
    it's well known, that in all these cases you describe I'm not a friend of a detailed Troubleshooting (I see Nancy#s smile already).
    To be able to be independent in all this things It is one of the reasons why I prefer an external FTP program. The difficulties with which you have to fight encourage me in this opinion, not least because we always search for experts, we don't charge a "jack of all trades".
    To manage several websites or to upload my files and sometimes for the opposite way, for a necessary download from my server or to use a "a site-wide synch", I'm using FileZilla. It simply looks easier for me to keep track of all operations precisely and generate or reflect easily the desired tree structure.
    Above all, FileZilla has a feature (translation from my German FileZilla) called "compare file list". Here it's possible to use file size or modification time as a criterion. There is also the possibility to "hide identical files", so that only these files which you want to redact remain visible.
    And even if it means you have to install a new program, I am convinced that there is an advantage. Here is the link to get it and where you can read informations about how it works:
    http://filezilla-project.org/ and http://wiki.filezilla-project.org/Tutorial#Using_the_site_manager
    Mac: Mac OS X (Use: Show additional download options)
    http://filezilla-project.org/download.php
    Of course, you also need all the access data to reach your server and for MIME issues, you should contact your web host/provider.
    Good luck!
    Hans-Günter
    P.S.
    Since I use two screens, the whole thing became even more comfortable.

  • Hi, I have a problem with getting my apple Id working for me. It's been 2 months since it happened and Apple failed to act. I can tell my story proerly, but am not sure, you guys can help, so I just copy my message to them today, I am trying to get it acr

    Hi, I have a problem with getting my apple Id working for me. It's been 2 months since it happened and Apple failed to act. I can tell my story proerly, but am not sure, you guys can help, so I just copy my message to them today, I am trying to get it across all the places around to pay their attention. This is a desperate move, so if you are not the right people to help me to get my message accross, may be you can advise where can I go.
    Thank you, and sorry for the language.
    Vitas Dijokas
    I am sorry to say that, but your security makes my life miserable – it’s been 2 months since my Apple ID account got stuck, and since then I cannot update 37 applications (to date), i.e. most of my applications. Half of them I bought. I also paid for iCloud, and it is not working. I paid money and I am stuck with old applications and no iCloud. Your security *****. Your service ***** too. It took your service 1 month to finally understand why this happened to me, and it took me tens of emails to you and 3 hours of telephone conversation to find out the reason for my problem. And the problem is still not fixed. NOT FIXED. You just leave your customer – the one who paid you money and spent so much time with you trying to help you help me – and nothing. You tell me:  “Vitas, Stick your stinky iphone in your *** and enjoy life, we do not care!” *************.
    It is ******* outrageous, and you should know that,  guys. Get into the ******* database and correct the bug. Get someone in the partners-telephone carriers company (it is Orange as carreer and Cellcom as seller of the phone)  authorized to Identify me in personal encounter in one of the branches in Israel (where I live) and make sure it is really me, and get the ******* system accept my password and let me use my phone.
    Otherwise **** off. None of my friends will get my advise to buy an iphone or any of apple products. And I think you should be very attentive to cases like this, guys. Do your work for the money we pay, or disappear. There are many others eager to take your place, and if the problem is not fixed I will eventually go to the others. My patience is lost, and as soon as I can afford another phone I will change it. AND I WILL TRY TO GIVE BAAAAAD PUBLICITY TO APPLE – I am threatening here, so ACT NOW.
    Vitas Dijokas

    Well, it seems waiting is not my strong suit..! I renamed a javascript file called recovery to sessionstore. This file was in the folder sessionstore-backups I had copied from mozilla 3 days ago, when my tabs were still in place. I replaced the sessionstore in mozilla's default folder with the renamed file and then started mozilla. And the tabs reappeared as they were 3 days ago!
    So there goes the tab problem. But again when I started mozilla the window saying "a script has stopped responding" appeared, this time the script being: chrome//browser/contenttabbrowser.xml2542
    If someone knows how to fix this and make firefox launch normally, please reply! Thank you

  • Problem with Cell size in Excel output of XML report

    Dear all,
    I am facing a problem with cell size when i run my XML report in Excel output. I found that it imitates the cell size of whatever i gave in the RTF. I cannot increase the cell size in RTF as my report contains 60 columns and max width of MS Word table is 22 inches.
    Can any one suggest a way of doing this which shows full data in Excel sheet depending on the column data size with out any word wrap.
    Thanks
    RAJ

    Hi ,
    You can try with
    <xsl:attribute xdofo:ctx="block" name="wrap-option">no-wrap</xsl:attribute>
    may be helpful to you
    Thanks,
    Ananth
    http://bintelligencegroup.wordpress.com/

  • Just moved my email from entourage to Mail. Having real problems with getting my signatures to work properly. When adding in a small company logo, windows computers only receive signature as an attachment. Am sending email as Rich Text. Any ideas on a fix

    Just moved my email from Entourage to Mail. Having real problems with getting my signatures to work properly despite sending email as Rich Text.
    When adding in a small company logo to the signature, PC's / windows computers only receive signature and logo as attachments.
    I've tried all possible fixes I can find including getting a PC user to format the logo but no joy. Has anyone experienced this and any ideas on a fix gratefully received.

    Send it as html so the signature is an image source URL

  • Problems with getting my Ipod Touch to work on my Sony Bravia or any TV

    I am having problems with getting videos or movies to play on my Sony Bravia HDTV or any TV. I have a first generation Ipod Touch and I have the Apple AV Composite Cables and all I get is sound for both TV's that I tried. I read one post where some guy had a faulty Ipod that wouldn't work. Does anyone know how of something hidden or special that needs to be done or how did they fix the problem if they had the same one? Thank, ejcarlson

    Check connection, if you have a case on your Ipod the connection may not be good enough.

  • Problem with getting iPod to work.

    I'm having a problem with getting an iPod to connect to my computers. Also I can't even really get it to run. My brother gave it to me one or two years ago and it had these problems I just didn't think of the idea of going directly to Apple to figure it out. It's a 30 GB black iPod if that helps. When I plugged it in it showed the battery symbol. When I leave it for a while it shows the Apple symbol. Then it comes up with this: http://spirrwell.webatu.com/ipod.jpg If you can help thanks in advance!
    Message was edited by: Spirrwell

    I figured out that it was a hard drive problem so I'll find a fix if not I guess I'm screwed.

  • Problem with getting the little blackberry icon

    Hi the blackberry I'm using is working and up to date. I was setting up my mates blackberry 9320 but having a problem with getting the little blackberry icon to appear in the top right corner of my phone where the GMS is and signal bar and stuff its something to do with blackberry.
    I tried downloading bbm and it say associating bbm with blackberry id and constant loads with nothing happening bbm not working
    I NEED THE TINY BB ICON AT TOP RIGHT???

    Hi neal123
                            That BlackBerry icon will appear near signal bar when we activate  BIS on a 3G device. Did he activated BIS on his account. ? 
    Click " Like " if you want to Thank someone.
    If Problem Resolves mark the post(s) as " Solution ", so that other can make use of it.

  • TS2755 I am having a problem with getting notified when I receive a call or a text.  My phone will not ring or vibrate.

    I am having a problem with getting notified when I receive a call or a text.

    Hi BigBroMAC,
    The first thing I would check is Do Not Disturb mode, as this will cause that behavior:
    iOS 6: Using Do Not Disturb
    http://support.apple.com/kb/HT5463
    If that isn't the issue, this article has slightly different symptoms but the troubleshooting would be the same:
    iPhone: Can't hear through the receiver or speakers
    http://support.apple.com/kb/TS1630
    Before you do step 10, however, I recommend resetting all settings to see if that helps.  To do that, choose Settings > General > Reset > Reset All Settings.
    I hope this helps!
    - Ari

  • Problem with model size in Visual Composer

    Hello madam/sir,
    We are using ECC 5.0 and VC 700.8.0.1. We got error message during
    deployment "Error in compiling Flex application. Branch between 19217
    and 228774 around line 0 exceeds 32K". When we delete several blocks in
    the model, it works good. So tried to delete different blocks so we
    think that the problem is not with specific block but with model size.
    Our model is in one iView. We cannot use additional nested
    iViews because we have HTML View blocks that cannot be in
    nested iView (according to VC documentation). Is there any solution for
    this error? What does it mean?
    Best Regards,
    Sergey Kozyrev

    I agree with Ashutosh, you have to remodeling your model. You can also try to restart VC and deploy your model again, this might also help sometimes (I had sometimes the issue, that I removed any components and then I get the 32K error, after restarting the error disappeared).
    You can also check if you have any global entry list, which you do not use in your model, this also could help to reduce you model size.
    Best Regards,
    Marcel

  • Printing Problem with custom size paper in Illustrator

    Hi having problems with my custom sized paper print using my canon printers it's the same on both the ip100 and the pro-100s,  it was printing fine until i've updated my illustrator and mac os Yosemite, it prints the image at a reduced size on the paper to what it should be does anyone have any understanding of this? I've tried everything i know, is this a driver or system problem?

    Hi there wasn't an option to set the default printer to pdf where would I do this?
    I've done a bit of a work around that seems to be working. I've put the page set up as A4 and then clicked on the printer utility custom settings and then unticked detect paper width, so I can put through the paper I want just got to tweak the x and y to get it right, its not the best but sitting here for four hours trying to figure it out, it will have to do for now. Thanks Jacob for your help, no doubt I'll be back in the morning, I'm burnt out now!

  • SwingUtilities.paintComponent - problems with painting childs of components

    Maybe this question was mention already but i cant find any answer...
    Thats what could be found in API about method paintComponent in SwingUtilities:
    Paints a component c on an arbitrary graphics g in the specified rectangle, specifying the rectangle's upper left corner and size. The component is reparented to a private container (whose parent becomes p) which prevents c.validate() and c.repaint() calls from propagating up the tree. The intermediate container has no other effect.
    The component should either descend from JComponent or be another kind of lightweight component. A lightweight component is one whose "lightweight" property (returned by the Component isLightweight method) is true. If the Component is not lightweight, bad things map happen: crashes, exceptions, painting problems...
    So this method perfectly works for simple Java components like JButton / JCheckbox e.t.c.
    But there are problems with painting JScrollBar / JScrollPane (only background of this component appears).
    I tried to understand why this happens and i think the answer is that it has child components that does not draw at all using SwingUtilities.paintComponent()
    (JScrollBar got at least 2 childs - 2 buttons on its both sides for scroll)
    Only parent component appears on graphics - and thats why i see only gray background of scrollbar
    So is there any way to draw something like panel with a few components on it if i have some Graphics2D to paint on and component itself?
    Simple example with JScrollPane:
    JScrollPane pane = new JScrollPane(new JLabel("TEST"));
    pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    SwingUtilities.paintComponent(g2d, pane, new JPanel(), 0, 0, 200, 200);Edited by: mgarin on Aug 11, 2008 7:48 AM

    Well the thing you advised could work... but this wont be effective, because i call repaint of the area, where Components painted, very often..
    So it will lag like hell when i make 10-20 repaints in a second... (for e.g. when i drag anything i need mass repainting of the area)
    Isnt there any more optimal way to do painting of the sub-components?
    As i understand when any component (even complicated with childs) paints in swing - its paint method calls its child components paint() to show them... can this thing be reproduced to paint such components as JScrollPane?

  • Problem with table size (initial extent)

    Hi,
    I have imported a table from my client's database, which shows the following size parameters as displayed from the user_segments table :-
    bytes : 33628160
    blocks : 4105
    extents : 1
    initial_extent : 33611776
    next_extent : 65536
    The number of rows in the table is 0 (zero). I am wondering how the table size could become so large, while other tables in the schema in the same tablespace have normal initial extent size.
    I then created a tablespace with an initial and next extent of 64k each, and imported the data into the tablespace, after which the table size and the initial extent for the table remained to be 33611776. This is the problem with 4-5 other tables out of a total of 500 tables.
    Of course if i drop and recreate the table, there is no problem, and the initial extent size and the table size becomes 64k, same as per the tablespace.
    Any suggestions? I do not want to drop the tables and recreate them.
    Because of this problem, even an attempt to import a blank database is consuming 2 GB of hard disk space.
    Thanks in advance
    DSG

    I don't think you can stop the extent from being allocated when you import the table.
    Even if you try to let the table inherit storage parameters from the tablespace, it will still allocate as many 64K extents as it needs to get to the 33M size in the table's (imported) storage parameter. I have also seen that when trying to change storage during an import like that, you can look in dba_tables and see the table has an ititial setting of 33M even though when you look in dba_segments you'll see that every extent allocated was in fact 64K. The dba_tables table is getting populated directly from the import and will therefore report the wrong number.
    Perhaps you can import then create table as... to put the tables in a better storage set up. (Letting tables inherit from the tablespace is the best way to go...no fragmentation that way). You might want to get the client to let you revamp the storage since theres no good reason to have one huge extent like that.

Maybe you are looking for

  • MacBook Pro Boot Camp Sound Audio Drivers Do Not Work with Miscrosoft Vista

    I installed Vista via Boot Camp on my new 15" i7 MacBook Pro. After full MS Vista patching and Apple Boot Camp driver installation, the sound/audio does not work. After some searching on the net, I've noticed that this is perhaps a widespread problem

  • Windows 7 Pro default profile

    I am trying to create a default profile for win 7pro machines. In XP it was as easy as copying the local admin account. Not so in windows 7. Has anyone found a work around for this? thank you

  • Object format with %

    Hello, I've a numeric dimension object with a default format object = 0,00 %. (The format is set in the designer) But when i use this object in a webi report, I get 0.06% in place of 6.3% ! The original value is 0.063 Few months ago, the report displ

  • Still NoClassDefFoundError

    Hi,      I am still getting the NoClassDefFoundError, I am testing with the following code. //file:OracleTest.java import java.sql.DriverManager; import java.sql.SQLException; import oracle.jdbc.OracleDriver; public class OracleTest { public OracleTe

  • Keyboard number pad not functioning!

    i dont know what exactly i did, i might have pressed a keyboard shortcut i dont know. im reletively new to macs. my number pad doesnt work at all. it's an apple keyboard. its the side of the far right with all the numbers on it. its the new apple g5