import java.awt.Graphics;
import javax.swing.*;
public class Fei extends JFrame{
private JLabel jLabel = new JLabel("bananer");
public Fei(){
add(jLabel);
System.out.println(jLabel.getGraphics());
}
public static void main(String[] args){
Fei frame = new Fei();
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Fei");
frame.setVisible(true);
JOptionPane.showMessageDialog(null, "123");/*这里为什么要加这句,
书上说延时作用,
不然看不到线,这里最根本的原因是什么
为什么去掉就看不到线
明明后两句画了线的*/
Graphics graphics = frame.jLabel.getGraphics();
graphics.drawLine(0, 0, 50, 50);
}
}

解决方案 »

  1.   


    JOptionPane.showMessageDialog(null, "123");是用来弹出一个对话框,
    showMessageDialog 方法是 弹出一个消息提示框,
    JOptionPane 中也有用来弹出其他类型对话框的方法。
      

  2.   

    public static void showMessageDialog(Component parentComponent,
                                         Object message)
                                  throws HeadlessException    Brings up an information-message dialog titled "Message". 
      

  3.   

    直线闪过之后为什么消失,下面的帖子(尤其是9楼)应该对你有帮助。
    http://topic.csdn.net/u/20080724/21/982EDCBF-4B1E-414C-AED2-C05B6DBB38FB.html#r_51257468
      

  4.   

    那是因为,Swing 界面是会刷新的,JOptionPane.showMessageDialog 就是弹出一个模式对话框来,这时必须模式对话框运行完才会继续运行 JFrame,在你没关闭模式对话前,JFrame 卡在当前你画出那条线的状态,所以能看到,而没有模式对话框时你看到 JFrame 的时候,界面已经刷新,而你画的线只在开始时画一次,当然看不到啦