Re: Adding Graphics to Jpanel
 
BEHROUZ wrote:
.. what's wrong with this code?
# package MyPack;
'#' is not a legitimate symbol for Java source like this.
Package names by convention are spelled in all lower-case letters.
# import java.awt.Color;
# import java.awt.Graphics;
# import javax.swing.JPanel;
#
# public class MyRect extends JPanel {
#
#    public void paintComponent(Graphics g) {
#         g.setColor (Color.BLUE);
#         g.drawRect (100, 100, 200, 200);
The class 'MyRect' will not compile as presented here.  It lacks at least two 
closing braces.
# =======================
# package MyPack;
# import java.awt.Color;
# import javax.swing.JPanel;
#
# public class MyPanel extends JPanel {
#
#   MyPanel() {
#     setBackground(Color.green);
#    // Add Drawing to Jpanel
#     MyRect mrect = new MyRect();
#     this.add(mrect);
#   // Add Component to Jpanel
#     MyLabel mlabel = new MyLabel();
#     this.add(mlabel);
#   }
# }
# =======================
# package MyPack;
#
# import java.awt.Color;
# import java.awt.Font;
# import javax.swing.JLabel;
#
#   public class MyLabel extends JLabel{
Your indentation is inconsistent.
#   public MyLabel() {
#       super("Hello, World!");
#       setFont(new Font(null, Font.BOLD, 40));
#       setForeground(Color.red);
#    }
# }
# =======================
# package mypaneltest;
# import javax.swing.JFrame;
#
# public class MyFrame extends JFrame {
It's not too bad in this context, but gurus like Joshua Bloch suggest 
preferring composition to inheritance.  That is, your main class would simply 
instantiate a local or instance-member 'JFrame' rather than inheriting from 
the class.
# public MyFrame(){
     ^
Indent this line.
#      super("Test");
#      setSize(300,200);
#      setLocationRelativeTo(null);
#      MyPanel pane = new MyPanel();
#      add(pane);
# }
     ^
Indent this line.
# }
# ======================
# package MyPack;
#
# public class Main {
#   public static void main(String[] args) {
#   new MyFrame().setVisible(true);
#    }
# }
You forgot to 'pack()'.  You have GUI actions that are not happening on the 
Event Dispatch Thread (EDT).  Both those mistakes will cost you weird bugs.
-- 
Lew