无法显示自定义JComponent

时间:2011-05-16 10:14:08

标签: java swing user-interface custom-controls jcomponent

嘿伙计们,我遇到的问题似乎应该更加简单。我只是不能让我的简单自定义JComponent显示出来!我选择使用绝对定位,我不确定这是否会导致一些问题。任何建议和/或解决方案<非常感谢。 Thankss!

(以下是我的代码)

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);

    }

}

这是简单的JComponent类

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);
    }
}

基本上,我的问题是我的JFrame中没有任何内容......:/ Help!

1 个答案:

答案 0 :(得分:2)

方法名称为paintComponent。它从小写开始:Link