我想把frame容器上的都顯示,為什麼只顯示我最後add的?
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
import java.awt.geom.Ellipse2D;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JComponent;
public class P5_11
{
public static void main(String args[])
{
JFrame frame = new JFrame();
frame.setTitle("P5_11");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
LetterH letterH = new LetterH();
LetterE letterE = new LetterE();
LetterL letterL = new LetterL();
LetterO letterO = new LetterO();
frame.add(letterH);
frame.add(letterE);
frame.add(letterL);
frame.add(letterO);
frame.setVisible(true);
}
}
class LetterH extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(60,100);
Point2D.Double p2 = new Point2D.Double(60,200);
Point2D.Double p3 = new Point2D.Double(110,100);
Point2D.Double p4 = new Point2D.Double(110,200);
Point2D.Double p5 = new Point2D.Double(60,150);
Point2D.Double p6 = new Point2D.Double(110,150);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p3,p4);
Line2D.Double l3 = new Line2D.Double(p5,p6);
g2.draw(l1);
g2.draw(l2);
g2.draw(l3);
}
}
class LetterE extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(130,100);
Point2D.Double p2 = new Point2D.Double(130,200);
Point2D.Double p3 = new Point2D.Double(180,100);
Point2D.Double p4 = new Point2D.Double(130,150);
Point2D.Double p5 = new Point2D.Double(180,150);
Point2D.Double p6 = new Point2D.Double(180,200);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p1,p3);
Line2D.Double l3 = new Line2D.Double(p4,p5);
Line2D.Double l4 = new Line2D.Double(p2,p6);
g2.draw(l1);
g2.draw(l2);
g2.draw(l3);
g2.draw(l4);
}
}
class LetterL extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(210,100);
Point2D.Double p2 = new Point2D.Double(210,200);
Point2D.Double p3 = new Point2D.Double(260,200);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p2,p3);
Point2D.Double p4 = new Point2D.Double(280,100);
Point2D.Double p5 = new Point2D.Double(280,200);
Point2D.Double p6 = new Point2D.Double(330,200);
Line2D.Double l3 = new Line2D.Double(p4,p5);
Line2D.Double l4 = new Line2D.Double(p5,p6);
g2.draw(l1);
g2.draw(l2);
}
}
class LetterO extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Ellipse2D.Double e1 = new Ellipse2D.Double(350,100,70,90);
g2.draw(e1);
}
}
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
import java.awt.geom.Ellipse2D;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JComponent;
public class P5_11
{
public static void main(String args[])
{
JFrame frame = new JFrame();
frame.setTitle("P5_11");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
LetterH letterH = new LetterH();
LetterE letterE = new LetterE();
LetterL letterL = new LetterL();
LetterO letterO = new LetterO();
frame.add(letterH);
frame.add(letterE);
frame.add(letterL);
frame.add(letterO);
frame.setVisible(true);
}
}
class LetterH extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(60,100);
Point2D.Double p2 = new Point2D.Double(60,200);
Point2D.Double p3 = new Point2D.Double(110,100);
Point2D.Double p4 = new Point2D.Double(110,200);
Point2D.Double p5 = new Point2D.Double(60,150);
Point2D.Double p6 = new Point2D.Double(110,150);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p3,p4);
Line2D.Double l3 = new Line2D.Double(p5,p6);
g2.draw(l1);
g2.draw(l2);
g2.draw(l3);
}
}
class LetterE extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(130,100);
Point2D.Double p2 = new Point2D.Double(130,200);
Point2D.Double p3 = new Point2D.Double(180,100);
Point2D.Double p4 = new Point2D.Double(130,150);
Point2D.Double p5 = new Point2D.Double(180,150);
Point2D.Double p6 = new Point2D.Double(180,200);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p1,p3);
Line2D.Double l3 = new Line2D.Double(p4,p5);
Line2D.Double l4 = new Line2D.Double(p2,p6);
g2.draw(l1);
g2.draw(l2);
g2.draw(l3);
g2.draw(l4);
}
}
class LetterL extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p1 = new Point2D.Double(210,100);
Point2D.Double p2 = new Point2D.Double(210,200);
Point2D.Double p3 = new Point2D.Double(260,200);
Line2D.Double l1 = new Line2D.Double(p1,p2);
Line2D.Double l2 = new Line2D.Double(p2,p3);
Point2D.Double p4 = new Point2D.Double(280,100);
Point2D.Double p5 = new Point2D.Double(280,200);
Point2D.Double p6 = new Point2D.Double(330,200);
Line2D.Double l3 = new Line2D.Double(p4,p5);
Line2D.Double l4 = new Line2D.Double(p5,p6);
g2.draw(l1);
g2.draw(l2);
}
}
class LetterO extends JComponent
{
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Ellipse2D.Double e1 = new Ellipse2D.Double(350,100,70,90);
g2.draw(e1);
}
}
去学习下布局.
main方法改成这个样子:public static void main(String args[])
{
JFrame frame = new JFrame();
frame.setTitle("P5_11");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
LetterO letterO = new LetterO();
letterO.setSize(500,500);
frame.add(letterO);
LetterL letterL = new LetterL();
letterL.setSize(340, 500);
frame.add(letterL);
LetterE letterE = new LetterE();
letterE.setSize(190, 500);
frame.add(letterE);
LetterH letterH = new LetterH();
letterH.setSize(120, 500);
frame.add(letterH);
frame.setVisible(true);
}另外LetterL类的paintComponent方法少了两句:
g2.draw(l3);
g2.draw(l4);看看效果吧.