我发现一个神奇的错误,请求高手指导在下面简短几行的代码中,运行后我所加的标签和文本域居然显示不出来
只有在双击使其最大化的后才可以显示出来!如果将其最小化后在打开又是什么都看不见了,然后再双击使其最大化又可以看不见了!请问这是什么原因呢?
怎样改正,才可以让其运行后,就正常显示了呢?
谢谢
代码如下;import java.awt.*;
import javax.swing.*;public class Test extends JApplet
{
JTextField xfield1 ;
JLabel xLabel1 ;
Container con;
public void init()
{
con=getContentPane();
con.setLayout(new FlowLayout());
xfield1 = new JTextField(6);
xLabel1 = new JLabel("请输入X1坐标");
con.add(xLabel1);
con.add(xfield1);
}
public void paint(Graphics g)
{
g.drawLine(20,20,50,100); }
}
只有在双击使其最大化的后才可以显示出来!如果将其最小化后在打开又是什么都看不见了,然后再双击使其最大化又可以看不见了!请问这是什么原因呢?
怎样改正,才可以让其运行后,就正常显示了呢?
谢谢
代码如下;import java.awt.*;
import javax.swing.*;public class Test extends JApplet
{
JTextField xfield1 ;
JLabel xLabel1 ;
Container con;
public void init()
{
con=getContentPane();
con.setLayout(new FlowLayout());
xfield1 = new JTextField(6);
xLabel1 = new JLabel("请输入X1坐标");
con.add(xLabel1);
con.add(xfield1);
}
public void paint(Graphics g)
{
g.drawLine(20,20,50,100); }
}
con.getGraphics().drawLine(20,20,50,100);
//------------code -----------------
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.HeadlessException;import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JTextField;public class AppletTest extends JApplet
{ public AppletTest() throws HeadlessException
{
super();
// TODO Auto-generated constructor stub
} JTextField xfield1; JLabel xLabel1; Container con; public void init()
{
con = getContentPane();
con.setLayout(new FlowLayout());
xfield1 = new JTextField(6);
xLabel1 = new JLabel("请输入X1坐标");
con.add(xLabel1);
con.add(xfield1); }}
问题得以解决
其中
-----------------------------------------------------问题不神奇,你把paint方法重写了,所以只有你画线的显示,你在paint()方法中,先写上super.paint(g)就可以了。
------------------------------------------------------------------的方法,最好@@
非常感谢!!
public void paint(Graphics g)
{
g.drawLine(20,20,50,100);
}
里面加个 super.paint(g);就一切N正常了,但是我又想将paint()改为:paintComponent()
也就是上面的代码替换为:
public void paintpaintComponent(Graphics g)
{
super.paintComponents(g);//我想换为super.paintComponent()的
//但是程序只是代"s"的组建
g.drawLine(20,20,50,100);
}
其他都不变,如果这样改,那么直线就画不出来了,请问,是怎么回事呢?
谢谢!!!