0

Hey guys, I'm having problems with something that seems like it should be so much more simple. I just cant get my simple custom JComponent to show up! I'm using Absolute Positioning by choice, and I'm not sure if that could be causing some of the problems. Any advice and or a >solution< is greatly appreciated. Thankss!

(heres my code)

public class XtremePaintballNetwork {

    private static JFrame _xpbnWindow;
    private static JTextField _chatTextField;
    //private static Map _map;
    private static Map _map;

    public static void main(String[] args) {
        // Set up main window
        _xpbnWindow = new JFrame("Xtreme Paintball Network");
        _xpbnWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        _xpbnWindow.setSize(400, 300);;
        //_xpbnWindow.setBackground(Color.white);
        //_xpbnWindow.getContentPane().setBackground(Color.white);
        //_xpbnWindow.pack();
        _xpbnWindow.setVisible(true);


        addComponentsToPane();

        _xpbnWindow.addComponentListener( new ComponentListener() {
            public void componentHidden(ComponentEvent e) {}
            public void componentMoved(ComponentEvent e){}
            public void componentResized(ComponentEvent e) {
                adjustBounds();
            }
            public void componentShown(ComponentEvent e) {}
        });

        _xpbnWindow.repaint();
    }

    private static void addComponentsToPane() {
        Container pane = _xpbnWindow.getContentPane();

        // Use Absolute Positioning
        pane.setLayout(null);

        // Create GUI components
        _map = new Map();
        _chatTextField = new JTextField();

        // Add components to pane
        pane.add(_map);
        pane.add(_chatTextField);

        // Calculate and set Bounds
        adjustBounds();
    }

    private static void adjustBounds() {
        Container pane = _xpbnWindow.getContentPane();


        // Use 'null' layout -> Absolute Positioning
        Insets insets = pane.getInsets();
        Dimension _windowDimension = pane.getSize();
        Dimension _chatDimension = _chatTextField.getPreferredSize();
        /*_map.setBounds(0, insets.top, _windowDimension.width - insets.left - insets.right,
                _windowDimension.height - insets.top - insets.bottom);*/
        _map.setBounds(10, 10, 100, 100);
        _chatTextField.setBounds(0, _windowDimension.height - _chatDimension.height - insets.top - insets.bottom,
             _windowDimension.width - insets.left - insets.right, _chatDimension.height);

    }

}

and here's the simple JComponent class

public class Map extends JComponent{


    //@Override
    protected void PaintComponent(Graphics g){
        super.paintComponent(g);
        g.drawLine(0, 0, 70, 70);
        g.drawString("string",20,20);
    }
}

Basically, my problem is that nothing shows up within my JFrame... :/ Help!

MByD
  • 135,866
  • 28
  • 264
  • 277
sduffy89
  • 97
  • 7

1 Answers1

2

The methods name is paintComponent. It starts lower case: Link

Lukas Knuth
  • 25,449
  • 15
  • 83
  • 111
  • Geeze, thanks! Its 5am here and I'm trying to reprogram something I lost because I didn't back it up. Java naming conventions and my own knowledge is just shot at the moment. Thanks a ton haha. Somebody delete this post, its retarded :P – sduffy89 May 16 '11 at 10:25
  • 3
    @sduffy89 - I have noticed that you commented the `@Override` notation. I assume it gave you some warning that told you that this method doesn't override any method. don't ignore those warnings, that's what this notation is for... – MByD May 16 '11 at 10:30