你没有调用Jorgan类的paint()方法。只需在mainFrame类中加入下面的一个成员方法即可:
public void paint(Graphics g){
jo.paint(g);
}另外你的Jorgan类的paint()方法中,字符串所画位置不要为(0,0),应适当大些。全部代码如下:
//mainFrame.java
import javax.swing.*;
import java.awt.*;public class mainFrame extends JFrame
{
private JPanel dp;
Jorgan jo = new Jorgan();
public mainFrame()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } private void jbInit() throws Exception
{
this.getContentPane().setLayout(new BorderLayout());
this.setSize(new Dimension(400, 300));
dp = new JPanel();
this.getContentPane().add(dp, BorderLayout.CENTER);
Jorgan jo = new Jorgan();
jo.setBounds(40,40,40,40);
jo.setVisible(true);
dp.setVisible(true);
} public void paint(Graphics g){
jo.paint(g);
}
public static void main(String[] args)
{
mainFrame mf = new mainFrame();
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mf.setVisible(true);
}
}//Jorgan.java
import javax.swing.*;
import java.awt.Graphics;public class Jorgan extends JPanel
{
public Jorgan()
{
try
{
this.jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } private void jbInit() throws Exception
{
this.setLayout(null);
} public void paint(Graphics g)
{
super.paint(g);
g.drawString("11111",50,80);
}
}
public void paint(Graphics g){
jo.paint(g);
}另外你的Jorgan类的paint()方法中,字符串所画位置不要为(0,0),应适当大些。全部代码如下:
//mainFrame.java
import javax.swing.*;
import java.awt.*;public class mainFrame extends JFrame
{
private JPanel dp;
Jorgan jo = new Jorgan();
public mainFrame()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } private void jbInit() throws Exception
{
this.getContentPane().setLayout(new BorderLayout());
this.setSize(new Dimension(400, 300));
dp = new JPanel();
this.getContentPane().add(dp, BorderLayout.CENTER);
Jorgan jo = new Jorgan();
jo.setBounds(40,40,40,40);
jo.setVisible(true);
dp.setVisible(true);
} public void paint(Graphics g){
jo.paint(g);
}
public static void main(String[] args)
{
mainFrame mf = new mainFrame();
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mf.setVisible(true);
}
}//Jorgan.java
import javax.swing.*;
import java.awt.Graphics;public class Jorgan extends JPanel
{
public Jorgan()
{
try
{
this.jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } private void jbInit() throws Exception
{
this.setLayout(null);
} public void paint(Graphics g)
{
super.paint(g);
g.drawString("11111",50,80);
}
}
dp.setLayout(new BorderLayout());
Jorgan jo = new Jorgan();
jo.setBounds(40,40,40,40);
dp.add(jo, BorderLayout.CENTER); 2. no need write paint() for mainFrame3. better replace paint() to paintComponent() for Jorgan. Because you are using JComponent.4. increase the height in drawString(). mainFrame's TileBar will hide your words.
用BorderLayout定位显示不方便。谢谢解答。