java的jpanel一闪一闪的,java中Jpanel上绘图,成效一闪即逝,求解答

java中Jpanel上绘图,效果一闪即逝,求解答

设计思路是一个大的Jpanel(继承Frame)上布局有一些常规控件,另外还添加了一个小Jpanel,这个Jpanel上用于绘制出点(点坐标已有)。效果是点击某一个按钮,小Jpanel上绘制出点。问题是运行后Frame下的组件都能显示,但点击按钮小Jpanel绘出的点一闪即逝,或是根本不显示。试过将绘制方法重写并放入另一线程中,仍然不能解决。 急!!!望大神们不吝赐教,谢谢

Java

控件

分享到:

------解决方案--------------------

和你实现的没啥不一样 ,加了按钮进行测试

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.awt.event.*;

class MyJPanle extends JPanel

{

@Override

public void paintComponent(Graphics g)

{

super.paintComponent(g);

if(JPanelTest.flag)

{

//话一个区域

g.setColor(Color.YELLOW);

g.fillRect(20,20,50,80);

//画一行文字

g.setColor(Color.BLACK);

g.setFont(new Font("Times New Roman",Font.BOLD,20));

g.drawString("The National GeoGraphics",40,50);

}

else

{

//话一个区域

g.setColor(Color.YELLOW);

g.fillRect(20,20,50,80);

//画一行文字

g.setColor(Color.BLACK);

g.setFont(new Font("宋体",Font.BOLD,20));

g.drawString("国家地理杂志",40,50);

}

}

}

public class JPanelTest extends JFrame

{

public static boolean flag;

private JPanel big;

private JPanel small;

private JButton btnAction;

static{

flag = true;

}

public JPanelTest()

{

//自由定位

setLayout(null);

setBounds(0,0,800,600);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

big = new JPanel();

big.setBounds(0,0,500,500);

//为了方便看,给Big画一个边框

Border lb = BorderFactory.createLineBorder(Color.ORANGE,7);

big.setBorder(lb);

add(big);

Border lb2 = BorderFactory.createLineBorder(Color.ORANGE,7);

//让小panel 是自己实现的Panel

small = new MyJPanle();

small.setBounds(50,50,300,200);

small.setBorder(lb2);

big.setLayout(null);

big.add(small);

//在samll panel 里面画东西

btnAction = new JButton("Click Me");

btnAction.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

JPanelTest.flag = !JPanelTest.flag;

small.repaint();

}

});

btnAction.setBounds(10,10,100,30);

big.add(btnAction);

setVisible(true);

}

public static void main(String[] args)

{

JPanelTest f = new JPanelTest();

System.out.println("Hello World!");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值