Problem with ControlBar in TitleWindow subclass

If adding the controlbar using addChild (as last child), the controlbar children (a couple of buttons)  turnes up inside the white main field of the window. No sign of rounded bottom corners nor the usual controlbar background color.
If I do 'this.controlBar = myControlBar;', an empty controlbar turns up at the bottom.
What can be done to fix this problem ??

Hi barna
Here is some code from inside function:
var cbar:ControlBar = createControlBar(); 
var hbox:HBox = createHBox(); 
var spacer:Spacer = createSpacer();
hbox.addChild(createButtonCopyText());
hbox.addChild(createButtonCopyTextAll()) ;
hbox.addChild(createButtonClose());
cbar.addChild(spacer);
cbar.addChild(hbox);
addChild(cbar);
See image for result.

Similar Messages

  • I've a problem with QuickTime controlbar when I use transparent wmode

    Hello All,
    I've a problem with QuickTime controlbar. When I use this code :
    <object height="592" width="690" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B">
    <param value="http://streamer.podcast.ulg.ac.be/reflexions/scienceensamusant/doccafe/D ocHorlogesBis.mov" name="src">
    <param value="true" name="autoplay">
    <param value="true" name="controller">
    <param value="true" name="kioskmode">
    <param value="true" name="loop">
    <param value="video/quicktime" name="type">
    <param value="transparent" name="wmode">
    <embed height="592" width="690" type="video/quicktime" loop="true" kioskmode="true" controller="true" autoplay="true" pluginspage="http://www.apple.com/quicktime/download/" src="http://streamer.podcast.ulg.ac.be/reflexions/scienceensamusant/doccafe/Doc HorlogesBis.mov">
    </object>
    with transparent wmode, the controlbar don't print correcty on IE7/IE8.
    If I use this code without wmode='transparent', It work but my css menu doesn't work.
    Anybody can help me ? Thank in advance.
    JP

    Hello,
    The suggestion made by Golubkov is correct. Make sure that you have configured the CAN objects to correspond to the Ports- for instance, Port1 to CAN0 and Port 2 to CAN1.
    If this dosen't fix the problem, let us know what the error message clearly states ( can be found out by clicking on the details tab).

  • Problem with inheritance and outputting values in toString.

    Hey guys, i'm having a major problem with inheritances.
    What i'm trying to do with my program is to create objects in my demo class. Values are passed to several other objects that each do their own calculations of grades and results and then outputs the result in my toString. I followed step by step the instructions in my book on how to setup the inheritance and such. I can only output everything that was created in my superclass, any other thing that was created in an object that belongs to a subclass does not display in the output at all.
    Even if I change or create new instance variables, I can't figure out for the life of myself how to output the other values.
    Because there's so much code to be splitting on the forums, I zipped my whole project in a RAR. I'll link it here
    http://www.4shared.com/file/ZleBitzP/Assign7.html
    The file to run the program is CourseGradesDemo class, everything else is either a subclass or superclass to some part of the program. After you run CourseGradesDemo, you will see the output, and understand what displays and what stays at 0.0 value. If anyone can help me out with this it would be greatly appreciated
    Thanks in advance.

    Basshunter36 wrote:
    Hey guys, i'm having a major problem with inheritances.
    What i'm trying to do with my program is to create objects in my demo class. Values are passed to several other objects that each do their own calculations of grades and results and then outputs the result in my toString. I followed step by step the instructions in my book on how to setup the inheritance and such. I can only output everything that was created in my superclass, any other thing that was created in an object that belongs to a subclass does not display in the output at all.
    Even if I change or create new instance variables, I can't figure out for the life of myself how to output the other values.No idea what you're talking about. Provide an [url http://sscce.org]SSCCE.
    Because there's so much code to be splitting on the forums, I zipped my whole project in a RAR. I'll link it here
    http://www.4shared.com/file/ZleBitzP/Assign7.html
    Not gonna happen. Provide an [url http://sscce.org]SSCCE. And don't say you can't. You definitely can. You may have to spend an hour building a new program from scratch and getting it to reproduce the problem, but if you can't or won't do that, you'll find few people here willing to bother with it.

  • Problem with Drag and Drop (TransferHandler)

    I have a stern problem with the java.swing.TransferHandler. It shows a design weakness, and because of a tiny glitch I am currently not able to finish my task.
    The design weakness is that method importData(JComponent comp, Transferable t) does not pass the dropAction information in the parameter list. The application case in question is a transfer from a JTree to a JTree (might likewise be to/from a JList). The transfer semantics imply that partial success is possible (there are item identity and uniqueness considerations to handle). - I can deal with all detail demands except that I cannot discriminate between COPY and MOVE taking place in the transfer. Also I don't find any possibility to retrieve this information by subclassing TranferHandler or from any other element there.
    Is there any expert who knows a solution?

    I came up with two solutions. One is I modified my application requirements for the time being so the problem disappears. :)
    Second, I had the idea to create a subclass of javax.swing.TransferHandler and copy/override as many methods as necessary to allow for an extra method public boolean importData(JComponent comp, Transferable t, int action) and derive the extra value from a modified method DropHandler.drop(DropTargetDropEvent e) in a copy of the DropHandler.
    Whether this really works, I have not tested.
    As for your answer, Andre_Uhres, I don't find it elaborate enough that it leads to a solution, hence no stars rewarded. You leave it open how to get hold of the DropTarget events which are dealt with privately in javax.swing.TransferHandler.
    I consider the subject closed for my purposes. Thanks very much for your reply!

  • Problem with FLVPlayback and component

    First of all I had problem with control component. they are not working so i just named that ppo and change the visibility to false to get rid of problem!
    ppo.visible=false;
    Question1
    (is there anyway to solve the problem? I mean to match the controlbar with screen of FLVplayer.)
    Question2
    what is the difference btw Flvplayback and FLVplayback 2.5 ?
    Question3
    whenever I click in btn1 it plays the flv.but sometimes it has no action so i click again and suddenly it plays the 001.flv twice and simultanously(even more than twice!)
    how can I solve my problem ?
    ___________________Frame 1______________
    import fl.video.*;
    import flash.events.MouseEvent;
    var myVideo:FLVPlayback = new FLVPlayback();
    control.visible=false;
    myVideo.x = 115;
    myVideo.y = -10;
    myVideo.skinBackgroundColor = 0x333333;
    myVideo.skinAutoHide=true;
    myVideo.skinFadeTime=300;
    addChild(myVideo);
    btn1.addEventListener(MouseEvent.CLICK , c1);
    function c1(e:MouseEvent):void
    myVideo.source = '001.flv';   
    Question 4 : I want to jump to another frame and start another flv but I want to stop previous flv. and again add myVideo2 to stage like frame 1 pattern. Is it true ? is there any better way to do this ?
    ---------------------------frame5-----------------------
    import fl.video.*;
    import flash.events.MouseEvent;
    var myVideo2:FLVPlayback = new FLVPlayback();
    control2.visible=false;
    myVideo2.x = 115;
    myVideo2.y = -10;
    myVideo2.skinBackgroundColor = 0x333333;
    myVideo2.skinAutoHide=true;
    myVideo2.skinFadeTime=300;
    addChild(myVideo2);
    btn2.addEventListener(MouseEvent.CLICK , c2);
    function c2(e:MouseEvent):void
    myVideo2.source = '002.flv';   
    thank you in advanced..

    Question1
    (is there anyway to solve the problem? I mean to match the controlbar with screen of FLVplayer.)
    what are you calling the '..controlbar' and what are you calling the '...control component'?
    Question2
    what is the difference btw Flvplayback and FLVplayback 2.5 ?
    2.5 has more features, http://blogs.adobe.com/ktowes/2009/05/announcing_dvrcast_and_flvplay.html
    Question3
    whenever I click in btn1 it plays the flv.but sometimes it has no action so i click again and suddenly it plays the 001.flv twice and simultanously(even more than twice!)
    how can I solve my problem ?
    remove the click listener so you can only click once.  then you may need to wait if testing online.
    ___________________Frame 1______________
    import fl.video.*;
    import flash.events.MouseEvent;
    var myVideo:FLVPlayback = new FLVPlayback();
    control.visible=false;
    myVideo.x = 115;
    myVideo.y = -10;
    myVideo.skinBackgroundColor = 0x333333;
    myVideo.skinAutoHide=true;
    myVideo.skinFadeTime=300;
    addChild(myVideo);
    btn1.addEventListener(MouseEvent.CLICK , c1);
    function c1(e:MouseEvent):void
    myVideo.source = '001.flv';   
    Question 4 : I want to jump to another frame and start another flv but I want to stop previous flv. and again add myVideo2 to stage like frame 1 pattern. Is it true ? is there any better way to do this ?
    ---------------------------frame5-----------------------
    import fl.video.*;
    import flash.events.MouseEvent;
    myVideo.stop();
    removeChild(myVideo);
    myVideo=null;
    var myVideo2:FLVPlayback = new FLVPlayback();
    control2.visible=false;
    myVideo2.x = 115;
    myVideo2.y = -10;
    myVideo2.skinBackgroundColor = 0x333333;
    myVideo2.skinAutoHide=true;
    myVideo2.skinFadeTime=300;
    addChild(myVideo2);
    btn2.addEventListener(MouseEvent.CLICK , c2);
    function c2(e:MouseEvent):void
    myVideo2.source = '002.flv';   

  • Problem with addRow and MultiLine Cell renderer

    Hi ,
    Ive a problem with no solution to me .......
    Ive seen in the forum and Ivent found an answer.......
    The problem is this:
    Ive a JTable with a custom model and I use a custom multiline cell renderer.
    (becuse in the real application "way" hasnt static lenght)
    When I add the first row all seem to be ok.....
    when I try to add more row I obtain :
    java.lang.ArrayIndexOutOfBoundsException: 1
    at javax.swing.SizeSequence.insertEntries(SizeSequence.java:332)
    at javax.swing.JTable.tableRowsInserted(JTable.java:2926)
    at javax.swing.JTable.tableChanged(JTable.java:2858)
    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableMo
    del.java:280)
    at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTa
    bleModel.java:215)
    at TableDemo$MyTableModel.addRow(TableDemo.java:103)
    at TableDemo$2.actionPerformed(TableDemo.java:256)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17
    64)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra
    ctButton.java:1817)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
    .java:419)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
    istener.java:245)
    at java.awt.Component.processMouseEvent(Component.java:5134)
    at java.awt.Component.processEvent(Component.java:4931)
    at java.awt.Container.processEvent(Container.java:1566)
    at java.awt.Component.dispatchEventImpl(Component.java:3639)
    at java.awt.Container.dispatchEventImpl(Container.java:1623)
    at java.awt.Component.dispatchEvent(Component.java:3480)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
    at java.awt.Container.dispatchEventImpl(Container.java:1609)
    at java.awt.Window.dispatchEventImpl(Window.java:1590)
    at java.awt.Component.dispatchEvent(Component.java:3480)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:197)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
    This seems to be caused by
    table.setRowHeight(row,(getPreferredSize().height+2)); (line 164 of my example code)
    About the model I think its ok.....but who knows :-(......
    Please HELP me in anyway!!!
    Example code :
    import javax.swing.*;
    import javax.swing.table.*;
    import java.text.*;
    import javax.swing.text.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    public class TableDemo extends JFrame {
    private boolean DEBUG = true;
    MyTableModel myModel = new MyTableModel();
    MyTable table = new MyTable(myModel);
    int i=0;
    public TableDemo() {
    super("TableDemo");
    JButton bottone = new JButton("Aggiungi 1 elemento");
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    //table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    //Create the scroll pane and add the table to it.
    JScrollPane scrollPane = new JScrollPane(table);
    //Add the scroll pane to this window.
    getContentPane().add(bottone,BorderLayout.NORTH);
    getContentPane().add(scrollPane, BorderLayout.CENTER);
    bottone.addActionListener(Add_Action);
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    class MyTable extends JTable {
    MultiLineCellRenderer multiRenderer=new MultiLineCellRenderer();
    MyTable(TableModel tm)
    super(tm);
    public TableCellRenderer getCellRenderer(int row,int col) {
              if (col==1) return multiRenderer;
              else return super.getCellRenderer(row,col);
    class MyTableModel extends AbstractTableModel {
    Vector data=new Vector();
    final String[] columnNames = {"Name",
    "Way",
    "DeadLine (ms)"
    public int getColumnCount() { return 3; }
    public int getRowCount() { return data.size(); }
    public Object getValueAt(int row, int col) {
    Vector rowdata=(Vector)data.get(row);
                                                                return rowdata.get(col); }
    public String getColumnName(int col) {
    return columnNames[col];
    public void setValueAt (Object value, int row,int col)
         //setto i dati della modifica
    Vector actrow=(Vector)data.get(row);
    actrow.set(col,value);
         this.fireTableCellUpdated(row,col);
         public Class getColumnClass(int c)
              return this.getValueAt(0,c).getClass();
         public boolean isCellEditable(int row, int col) {
    //Note that the data/cell address is constant,
    //no matter where the cell appears onscreen.
    if (col == 1)
    return false;
    else
    return true;
    public void addRow (String name,ArrayList path,Double dead) {
         Vector row =new Vector();
         row.add(name);
         row.add(path);
         row.add(dead);
         row.add(name); //!!!Mi tengo questo dato da utilizzare come key per andare a
         //prendere il path nella lista dei paths di Project
         //(needed as key to retrive data if name in col. 1 is changed)
         data.add(row);
         //Inspector.inspect(this);
         System.out.println ("Before firing Adding row...."+this.getRowCount());
         this.fireTableRowsInserted(this.getRowCount(),this.getRowCount());
    public void delRow (String namekey)
    for (int i=0;i<this.getRowCount();i++)
    if (namekey.equals(this.getValueAt(i,3)))
    data.remove(i);
    this.fireTableRowsDeleted(i,i);
    //per uscire dal ciclo
    i=this.getRowCount();
    public void delAllRows()
    int i;
    int bound =this.getRowCount();     
    for (i=0;i<bound;i++)     
         {data.remove(0);
         System.out.println ("Deleting .."+data);
    this.fireTableRowsDeleted(0,i);          
    class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
    private Hashtable rowHeights=new Hashtable();
    public MultiLineCellRenderer() {
    setEditable(false);
    setLineWrap(true);
    setWrapStyleWord(true);
    //this.setBorder(new Border(
    public Component getTableCellRendererComponent(JTable table,Object value,                              boolean isSelected, boolean hasFocus, int row, int column) {
    //System.out.println ("Renderer called"+value.getClass());
    if (value instanceof ArrayList) {
    String way=new String     (value.toString());
    setText(way);
    TableColumn thiscol=table.getColumn("Way");
    //System.out.println ("thiscol :"+thiscol.getPreferredWidth());
    //setto il size della JTextarea sulle dimensioni della colonna
    //per quanto riguarda il widht e su quelle ottenute da screen per l'height
    this.setSize(thiscol.getPreferredWidth(),this.getPreferredSize().height);
    // set the table's row height, if necessary
    //System.out.println ("Valore getPreferred.height"+getPreferredSize().height);
         if (table.getRowHeight(row)!=(this.getPreferredSize().height+2))
         {System.out.println ("Setting Row :"+row);
             System.out.println ("Dimension"+(getPreferredSize().height+2));
             System.out.println ("There are "+table.getRowCount()+"rows in the table ");
             if (row<table.getRowCount())
             table.setRowHeight(row,(getPreferredSize().height+2));
    else
    setText("");
    return this;
    /**Custom JTextField Subclass che permette all'utente di immettere solo numeri
    class WholeNumberField extends JTextField {
    private Toolkit toolkit;
    private NumberFormat integerFormatter;
    public WholeNumberField(int value, int columns) {
    super(columns);
    toolkit = Toolkit.getDefaultToolkit();
    integerFormatter = NumberFormat.getNumberInstance(Locale.US);
    integerFormatter.setParseIntegerOnly(true);
    setValue(value);
    public int getValue() {
    int retVal = 0;
    try {
    retVal = integerFormatter.parse(getText()).intValue();
    } catch (ParseException e) {
    // This should never happen because insertString allows
    // only properly formatted data to get in the field.
    toolkit.beep();
    return retVal;
    public void setValue(int value) {
    setText(integerFormatter.format(value));
    protected Document createDefaultModel() {
    return new WholeNumberDocument();
    protected class WholeNumberDocument extends PlainDocument {
    public void insertString(int offs,
    String str,
    AttributeSet a)
    throws BadLocationException {
    char[] source = str.toCharArray();
    char[] result = new char[source.length];
    int j = 0;
    for (int i = 0; i < result.length; i++) {
    if (Character.isDigit(source))
    result[j++] = source[i];
    else {
    toolkit.beep();
    System.err.println("insertString: " + source[i]);
    super.insertString(offs, new String(result, 0, j), a);
    ActionListener Add_Action = new ActionListener() {
              public void actionPerformed (ActionEvent e)
              System.out.println ("Adding");
              ArrayList way =new ArrayList();
              way.add(new String("Uno"));
              way.add(new String("Due"));
              way.add(new String("Tre"));
              way.add(new String("Quattro"));
              myModel.addRow(new String("Nome"+i++),way,new Double(0));     
    public static void main(String[] args) {
    TableDemo frame = new TableDemo();
    frame.pack();
    frame.setVisible(true);

    In the addRow method, change the line
    this.fireTableRowsInserted(this.getRowCount(),this.getRowCount()); to
    this.fireTableRowsInserted(data.size() - 1, data.size() - 1);Sai Pullabhotla

  • Problem with Request for Permissions (mobile app)

    In my application I want to publish the results of the games on facebook. I used this tutorial: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt1.html
    Here is a fragment of my source code:
    <fx:Script>
            <![CDATA[
                import com.facebook.graph.FacebookMobile;
                import mx.events.Request;
                import valueObjects.GlobalVariables;
                protected var extendedPermissions:Array = ["publish_stream","user_website","user_status","user_about_me"];
               protected function initApp():void
                    FacebookMobile.init("app ID",loginHandler);
                protected function loginHandler(success:Object,fail:Object):void
                    if(success){   
                        currentState="loggedin";
                        nameLbl.text=success.user.name;
                        userImg.source=FacebookMobile.getImageUrl(success.uid,"small");
                        birthdayLbl.text=success.user.birthday;
                        FacebookMobile.api("/me/statuses",getStatusHandler);
                    else{   
                        this.login();
                protected function login():void
                    FacebookMobile.login(loginHandler, stage, []);
                protected function logout():void
                    FacebookMobile.logout();
                    currentState="loggedout";
                protected function getStatusHandler(result:Object, fail:Object):void
                    statusLbl.text=result[0].message;
                protected function submitPost():void
                    FacebookMobile.api("/me/feed",submitPostHandler,{message:GlobalVariables.d.toString()}, "POST");
                protected function submitPostHandler(result:Object,fail:Object):void
                    FacebookMobile.api("/me/statuses",getStatusHandler);
            ]]>
        </fx:Script>
    I have problem with permissions. After login I see a white screen instead of request for permission.  The desktop application does not have a problem with it. When I log for the first time to the desktop application and I will give the permissions applications, then in the mobile application everything works fine. But this is not a good solution. And so please help.

    The labelField of IconItemRenderer only supports single line text.  Try using the messageField instead:
    <s:List width="200" height="200">
        <s:dataProvider>
            <s:ArrayList>
                <s:DataItem desc="1 Hello World Hello World Hello World" />
                <s:DataItem desc="2 Hello World Hello World Hello World" />
                <s:DataItem desc="3 Hello World Hello World Hello World" />
            </s:ArrayList>
        </s:dataProvider>
        <s:itemRenderer>
            <fx:Component>
                <s:IconItemRenderer labelField="" messageField="desc">
                </s:IconItemRenderer>
            </fx:Component>
        </s:itemRenderer>
    </s:List>
    If you need more control you might need to subclass, this post might help: http://flexponential.com/2011/08/21/adding-multiline-text-support-to-labelitemrenderer/

  • Alpha channel problem with Pixel Bender blendShaders

    I'm using Pixel Blender to try and create a blend shader for a Flex 4.0 app.
    It looks like this:
    <languageVersion : 1.0;>
    kernel PixelReverse
    <   namespace : "com.abc.def.filters";
        vendor : "EdAlive";
        version : 1;
    >
        input image4 foreground;
        input image4 background;
        output pixel4 dst;
        void
        evaluatePixel()
            pixel4 fgPixel = sampleNearest(foreground, outCoord());
            pixel4 bgPixel = sampleNearest(background, outCoord());
            if((bgPixel.r == 0.0) && (bgPixel.g == 0.0) && (bgPixel.b == 0.0) && (bgPixel.a == 0.0)){
                bgPixel.r = bgPixel.g = bgPixel.b = 1.0;
            dst.r = 1.0 - abs(fgPixel.r - bgPixel.r);
            dst.g = 1.0 - abs(fgPixel.g - bgPixel.g);
            dst.b = 1.0 - abs(fgPixel.b - bgPixel.b);
            dst.a = fgPixel.a;
    It looks correct in the Pixel Bender preview window.
    When I use it in a Flex project with proper 32 bit png images, the filter seems to work correctly, except it sets any partial alpha value on the images to fully opaque (like a 1 bit alpha channel).
    Because the image preview looks correct in Pixel Bender, I'm assuming it's a problem with the bitmap data that Flex is passing to the blend shader filter.
    I tried changing the filter to simply output a copy of the foreground firstly, and the background second, to test.
    When returning a copy of the foreground, the imags weren't visible on stage, either because the pixels were transparent or because it was really returning the background pixels, camouflaging the images.
    When returning a copy of the background, the images were just black rectangles.
    The images are being place on stage programmatically inside an mx Module, and having their depth property set.
    They also have draggable behaviour, where the current drag object is layered above all else during the drag.
    I'm actually using a subclass of mx.controls.Image, but am simply setting the source property with preloaded bitmap data, so I'm am fairly sure the subclass is not a factor.
    I hope this is enough information for someone to be able to provide some help.
    Thanks

    Please make sure you have installed the latest graphics drivers, from http://www.nvidia.com/Download/index.aspx?lang=en-us, for your graphics card.

  • Design flaw in overloading? Problem with visitor pattern

    I have been trying some implementations of the Visitor pattern in Java and have encountered a problem with overloaded methods in Java. It seems that the caller (client) of a overloaded method decides what implementation of that method is chosen. I find that strange from an OO / encapsulation point of view and it gets me into problems when using Visitor. This code shows my problem:
    // a class with overloaded methods
    public class OverLoadingTest {
         public void print(String s) {
              System.out.println("This looks like a String to me:");
              System.out.println("\"" + s + "\"");
         public void print(Object o) {
              System.out.println("This looks like an Object to me:");
              System.out.println("\"" + o + "\"");
    //a client for that class
    public class OverLoadingTestClient {
         public void test() {
              OverLoadingTest test = new OverLoadingTest();
              Object o1 = "String in an Object reference";
              String s1 = "String in a String reference";
              test.print(o1);
              test.print(s1);
         public static void main(String[] args) {
              new OverLoadingTestClient().test();
    //And the output is:
    This looks like an Object to me:
    "String in an Object reference"
    This looks like a String to me:
    "String in a String reference"
    //The output I would have expeced (wanted):
    This looks like a String to me: //it is a String!
    "String in an Object reference"
    This looks like a String to me:
    "String in a String reference"
    Why is this? Is there a work around?

    The specific method is decided on in compile time and by the client of that method, not the provider. I'd expect the client to just invoke the method and let the privider figure out what implementation to choose. Whatever the client thinks that he is providing as argument types.
    I am implementing a slightly different version compared to http://ootips.org/visitor-pattern.html. I find implementing "v.visit(this);" for every subclass of the Visisted superclass strange. Why an abstract method "accept(Visitor v);" when all subclasses will iplement it in the same way ("v.visit(this);")?
    Daan

  • Problem with JFormattedTextField

    Hi,
    I Want to set Max length of text in JFormattedTextField..
    I've tried to extend PlainDocument and override insertString and updateString, but it doesn't work.
    How can do it.
    Thanks.

    I've solved the problem with a subclass of DocumentFilter.
    Overriding the following methods : insertString,remove and update

  • Problem with Casting

    Dear all,
    I have two classes PureABox and ABoxDL. ABoxDL is an extension of PureABox .
    When I tried to call the clone() of ABoxDL, I get the following error message:
    OntologyManager.PureABox cannot be cast to OntologyManager.ABoxDL
    What's the problem? ABoxDL is a subclass of PureABox. It should be allowed to be cast, right?
    How can I fixed this? Copy the code of PureABox .clone() to ABoxDL.clone()?
    Thanks!
    public class PureABox {
         public PureABox clone(){
              PureABox pureABoxCopy = new PureABox();
              pureABoxCopy.setKB(this.kb);
              pureABoxCopy.aboxAssertions = SetUtils.create(this.getAssertions());
              pureABoxCopy.aboxConceptAssertions = SetUtils.create(this.getAboxConceptAssertions());
              pureABoxCopy.aboxRoleAssertions = SetUtils.create(this.getaboxRoleAssertions());
              pureABoxCopy.individuals = SetUtils.create(this.getIndividuals());
              return pureABoxCopy;
    public class ABoxDL extends PureABox{
         public ABoxDL clone(){
              return (ABoxDL)super.clone();
    ......

    spoon_ wrote:
    Peihong wrote:
    PureABox pureABoxCopy = (PureABox)super.clone();This will return an exception : CloneNotSupportedExceptionyes you need to implement CloneableYes, the exception has gone away with the following code. But it does not return what I want. So I need to customize it.
         public PureABox clone() throws CloneNotSupportedException{
              PureABox pureABoxCopy = (PureABox) super.clone();
              return pureABoxCopy;
    public class ABoxDL extends PureABox{
         public ABoxDL clone() throws CloneNotSupportedException{
              return (ABoxDL)super.clone();
    ......But if I want to customize the clone() like this
    public PureABox clone() throws CloneNotSupportedException{
         public PureABox clone(){
              PureABox pureABoxCopy = new PureABox();
              pureABoxCopy.setKB(this.kb);
              pureABoxCopy.aboxAssertions = SetUtils.create(this.getAssertions());
              pureABoxCopy.aboxConceptAssertions = SetUtils.create(this.getAboxConceptAssertions());
              pureABoxCopy.aboxRoleAssertions = SetUtils.create(this.getaboxRoleAssertions());
              pureABoxCopy.individuals = SetUtils.create(this.getIndividuals());
              return pureABoxCopy;
         public ABoxDL clone() throws CloneNotSupportedException{
         public ABoxDL clone(){
              return (ABoxDL)super.clone();
    ......I got an exception : PureABox cannot be cast to ABoxDL.
    Why? The first code has no exception, but the second one has an exception?

  • CurrentUISkin  problem with LOVs

    Hello JheadStart Team
    I'm using user selected skin by using menuAdminService and setting adf-faces-config to
    <skin-family>#{jhsDynamicMenu.currentUISkin}</skin-family>
    but i have problem with LOV's:
    Error getting property 'currentUISkin' from bean of type oracle.jheadstart.controller.jsf.bean.DynamicMenuBean: java.lang.RuntimeException: Cannot find JhsModelService, Binding container UsersPageDef data control data provider is null
    Kind regrads

    I was able to reproduce the problem. We will provide a fix in the next patch release.
    For now, you can apply the fix yourself as follows:
    - create a subclass of oracle.jheadstart.controller.jsf.bean.DynamicMenuBean
    - Add member variable to this class:
    private String myCurrentUISkin;
    - Override method setCurrentUISkin as follows:
    public void setCurrentUISkin(String currentUISkin)
    this.myCurrentUISkin = currentUISkin;
    - Override method getCurrentUISkin() as follows:
    public String getCurrentUISkin()
    try
    if (JhsModelServiceProvider.getInstance().getJhsModelService() !=null)
    setCurrentUISkin((String) getCurrentModule().getAttribute(SKIN_ATTRIBUTE_NAME));
    catch (Exception e)
    // do nothing, return "previous" currentUISkin;
    return this.myCurrentUISkin;
    - Make a custom template for JhsCommonBeans.vm. In this template replace oracle.jheadstart.controller.jsf.bean.DynamicMenuBean with your own fully qualified class name
    - Set the JHS_COMMON_BEANS template key at service level to your custom template
    - Generate again.
    Steven Davelaar,
    JHeadstart Team.

  • Problems with Factory pattern

    Sorry... I know this topic has been done to death but I still have some questions.
    In my development, I keep encountering a recurring problem that I believe should be solved by the 'factory pattern'. (Note: I'm not a patterns nut so I am only guessing about the correct pattern).
    Here is the problem:
    I develop an abstract base class. I extend the base class with several subclasses. Exterior objects use the instances via a base class reference and I don't want to them to have to know which is the correct subclass or how to create the instance.
    My solution is to make a create(param, param,...) method in the base class and using the param(s) construct the instance something like:static Foo create(int type)
    Foo instance = null;
    String className = "com.myco.foos.DefaultFoo";
    if(CONST_A == type)
      className = "com.myco.foos.FooA";
    else if(CONST_B == type)
      className = "com.myco.foos.FooB";
    {on and on...}
    {using reflection create a new instance from the className String}
    return instance;
    }The obvious problem with the create() method is that it becomes a maintenence point and I don't like the idea of a base class knowing about subclasses.
    Anyone know better a solution? Comments?
    Thanks in advance.

    Yes, that is the Factory pattern you describe. The client programs are going to call your createFoo() method and get back an instance of a subclass of Foo. Typically this pattern is used where there is some external entity that determines what subclass will be returned -- for example a system property -- and the client programs call createFoo() with no arguments. In this case reflection is used to create the instance, and your base class does not need to know anything about any subclasses.
    However, if your client programs can influence the choice of subclass, then they will have to pass some kind of parameter into createFoo(). At this point, createFoo() requires some decision logic that says "create this, or that, depending on the input parameter". And if that parameter is simply a code that enables the client programs to say "Give me a ChocolateFoo instance", then returning "new ChocolateFoo()" is the most straightforward design. But in this case, why can't the client program do that?
    If you don't like the base class having to know about subclasses (and you shouldn't be happy if it does), then you could have a helper class -- FooFactory -- that contains only the static method createFoo(). This class would know about Foo, and about any of its subclasses that it can produce instances of. It's still a maintenance point, no avoiding that, but at least it is off by itself somewhere.

  • Problems with Generics

    Ok, I have a problem with the <? extends NamedType> generic parameterized type, here are three example classes:
    public abstract class Base
         public abstract <? extends Base> getMe();
    public abstract class Spec
    extends Base
         public abstract <? extends Spec> getMe();
    public class Impl
    extends Spec
         public Impl()
              super();
         public Impl getMe()
              return this;
         public String toString()
              return "I live!";
    }And a main method in another class:
    public static void main(String[] args)
         Impl im = new Impl();
         Impl i = im.getMe();
         Spec s = Spec.getMe();
         Base b = Base.getMe();
         System.out.println("im = "+im);
         System.out.println("i = "+i);
         System.out.println("s = "+s);
         System.out.println("b = "+b);
    }And the compiler returns this:
    Base.java:3: <identifier> expected
            public abstract <? extends Base> getMe();
                             ^
    Base.java:3: > expected
            public abstract <? extends Base> getMe();
                                                    ^
    Spec.java:4: <identifier> expected
            public abstract <? extends Spec> getMe();
                             ^
    Spec.java:4: > expected
            public abstract <? extends Spec> getMe();
                                                    ^
    4 errorsPlease assist.

    It worked!
    I don't know why that didn't work in Eclipse, so:
    "Return types are compatible if the overriden method's return type is a subclass of the original method's return type."
    I also mistyped the main method, but this new one didn't change the original error:
    public static void main(String[] args)
         Impl im = new Impl();
         Impl i = im.getMe();
         Spec s = Spec.getMe();
         Base b = Base.getMe();
         System.out.println("im = "+im);
         System.out.println("i = "+i);
         System.out.println("s = "+s);
         System.out.println("b = "+b);
    }should be:
    public static void main(String[] args)
         Impl im = new Impl();
         Impl i = im.getMe();
         Spec s = i.getMe();
         Base b = s.getMe();
         System.out.println("im = "+im);
         System.out.println("i = "+i);
         System.out.println("s = "+s);
         System.out.println("b = "+b);
    }

  • Problem with inherited Objects

    Hi,
    I have a problem with inherited objects inside Flex using
    wsdl as the source of the object. The AS-classes are generated
    inside Flex Builder 3.
    Inside the wsdl I have 2 complex types:
    <complexType abstract="true" name="PersistentObject">
    <sequence>
    <element name="id" nillable="true" type="xsd:string"/>
    <element name="insertTimeStamp" nillable="true"
    type="xsd:dateTime"/>
    <element name="insertUsername" nillable="true"
    type="xsd:string"/>
    <element name="updateTimeStamp" nillable="true"
    type="xsd:dateTime"/>
    <element name="updateUsername" nillable="true"
    type="xsd:string"/>
    </sequence>
    </complexType>
    and
    <complexType name="Contact">
    <complexContent>
    <extension base="tns3:PersistentObject">
    <sequence>
    <element name="birthday" nillable="true"
    type="xsd:dateTime"/>
    <element name="firstName" nillable="true"
    type="xsd:string"/>
    <element name="lastName" nillable="true"
    type="xsd:string"/>
    <element name="middleName" nillable="true"
    type="xsd:string"/>
    <element name="newPassword" nillable="true"
    type="xsd:string"/>
    <element name="password" nillable="true"
    type="xsd:string"/>
    <element name="title" nillable="true"
    type="xsd:string"/>
    <element name="username" nillable="true"
    type="xsd:string"/>
    </sequence>
    </extension>
    </complexContent>
    </complexType>
    The classes in actionscript seem plausable:
    public class PersistentObject
    * Constructor, initializes the type class
    public function PersistentObject() {}
    public var id:String;
    public var insertTimeStamp:Date;
    public var insertUsername:String;
    public var updateTimeStamp:Date;
    public var updateUsername:String;
    and
    public class Contact extends PersistentObject
    * Constructor, initializes the type class
    public function Contact() {}
    public var birthday:Date;
    public var firstName:String;
    public var lastName:String;
    public var middleName:String;
    public var newPassword:String;
    public var password:String;
    public var title:String;
    public var username:String;
    When I want to retreive an object of type Contact, it seems
    that only a couple of entries are filled. While debugging the flex
    XMLDecoder, I noticed something strange. It seems, like the decoder
    is expecting the result xml data to be in alphabetical order:
    birthday, firstname, lastname, etc. But since the object is
    inherited, the data that is actually received contains elements
    from the parent class: birthday, firstname, id, inserttimestamp,
    The resulting object has just birthday and firstname filled,
    which is somehow wrong. This seems to be a problem inside the
    parser itself. What can I do?

    I am having a problem with an extended class as well.
    When I step through the code, everything is going fine and the decoder (mx.rpc.xml::XMLDecoder) sees that the class is an extension and wants to get the values for the superclass first.  When it gets into getApplicableValues(), it's looking for the values to be in the order of the definition which would be ok if the values collection didn't include the values from the subclass as well!  It goes through the whole definition and doesn't find anything for the superclass because the values aren't where it expects them.  When it pops back up to the subclass and starts to decode those values, it finds them because the definition order and values order match.
    Is this a known issue?  Or, am I misunderstanding something?
    Thanks,
    Chuck

Maybe you are looking for