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