一个简单java paint/repaint方法程序
packagedrawstring;//继承frame来画字符串。importjava.awt.Button;importjava.awt.Color;importjav...
package drawstring;//继承frame来画字符串。
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawString extends Frame implements ActionListener{
static boolean b1 =false;
static boolean b2= false;
static boolean b3= false;
static int counter=0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
DrawString()//析构函数
{
setSize(300,400);
btn1=new Button("显示字符串");
btn2=new Button("显示图形");
btn3=new Button("退出");
btn4=new Button("清屏");
setLayout(new FlowLayout());
add(btn1);
add(btn2);
add(btn3);
add(btn4);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
setVisible(true);
//setBackground(Color.white);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="退出")
{ System.exit(0);}
if(e.getActionCommand()=="显示图形")
{
// setSize(300,500);
b2= true;
// btn2.setEnabled(false);
counter++;
}
if(e.getActionCommand()=="显示字符串")
{
// setSize(300,500);
b1 = true;
}
if(e.getSource()==btn4)
{
b3=true;
}
repaint();
}
public void paint(Graphics g)//frame类里面的函数,继承过来的。
{
// super.paint(g);
if(b1==true){
g.setColor(Color.red);
g.drawString("hello,september", 100, 200);
}
if(b2==true){
g.setColor(Color.red);
g.drawOval(60, 100, 200, 200);
System.out.print(counter);
//b2=false;
}
if(b3==true){
g.setColor(getBackground());
if(b1==true)
{g.drawString("hello,september", 100, 200);}
if(b2==true)g.drawOval(60, 100, 200, 200);
//setForeground(getBackground());
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new DrawString();
}
}
我想要实现的结果是:按了清屏以后依然能够用显示字符串与图形,但是我这个程序一旦按了清屏就不能再按显示字符串了。我对paint程序了解甚少。
请高手帮忙。
运行结果如下:
为什么你修改之后的程序我要按两次清屏才能清呢????????? 展开
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawString extends Frame implements ActionListener{
static boolean b1 =false;
static boolean b2= false;
static boolean b3= false;
static int counter=0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
DrawString()//析构函数
{
setSize(300,400);
btn1=new Button("显示字符串");
btn2=new Button("显示图形");
btn3=new Button("退出");
btn4=new Button("清屏");
setLayout(new FlowLayout());
add(btn1);
add(btn2);
add(btn3);
add(btn4);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
setVisible(true);
//setBackground(Color.white);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="退出")
{ System.exit(0);}
if(e.getActionCommand()=="显示图形")
{
// setSize(300,500);
b2= true;
// btn2.setEnabled(false);
counter++;
}
if(e.getActionCommand()=="显示字符串")
{
// setSize(300,500);
b1 = true;
}
if(e.getSource()==btn4)
{
b3=true;
}
repaint();
}
public void paint(Graphics g)//frame类里面的函数,继承过来的。
{
// super.paint(g);
if(b1==true){
g.setColor(Color.red);
g.drawString("hello,september", 100, 200);
}
if(b2==true){
g.setColor(Color.red);
g.drawOval(60, 100, 200, 200);
System.out.print(counter);
//b2=false;
}
if(b3==true){
g.setColor(getBackground());
if(b1==true)
{g.drawString("hello,september", 100, 200);}
if(b2==true)g.drawOval(60, 100, 200, 200);
//setForeground(getBackground());
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new DrawString();
}
}
我想要实现的结果是:按了清屏以后依然能够用显示字符串与图形,但是我这个程序一旦按了清屏就不能再按显示字符串了。我对paint程序了解甚少。
请高手帮忙。
运行结果如下:
为什么你修改之后的程序我要按两次清屏才能清呢????????? 展开
2个回答
展开全部
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawString extends Frame implements ActionListener{
static boolean b1 =false;
static boolean b2= false;
static boolean b3= false;
static int counter=0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
DrawString()//析构函数
{
setSize(300,400);
btn1=new Button("显示字符串");
btn2=new Button("显示图形");
btn3=new Button("退出");
btn4=new Button("清屏");
setLayout(new FlowLayout());
add(btn1);
add(btn2);
add(btn3);
add(btn4);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
setVisible(true);
//setBackground(Color.white);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="退出")
{ System.exit(0);}
if(e.getActionCommand()=="显示图形")
{
// setSize(300,500);
b2= true;
// btn2.setEnabled(false);
counter++;
}
if(e.getActionCommand()=="显示字符串")
{
// setSize(300,500);
b1 = true;
}
if(e.getSource()==btn4)
{
b3=true;
}
repaint();
}
public void paint(Graphics g)//frame类里面的函数,继承过来的。
{
// super.paint(g);
if(b1==true){
Color c = g.getColor();
g.setColor(Color.red);
g.drawString("hello,september", 100, 200);
g.setColor(c);
}
if(b2==true){
Color c = g.getColor();
g.setColor(Color.red);
g.drawOval(60, 100, 200, 200);
System.out.print(counter);
g.setColor(c);
}
if(b3==true){
g.setColor(getBackground());
b1=false;
b2 = false;
b3 = false;
}
}
public static void main(String[] args) {
new DrawString();
}
}
我帮你调试了一下,看看是不是你想要的效果!
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawString extends Frame implements ActionListener{
static boolean b1 =false;
static boolean b2= false;
static boolean b3= false;
static int counter=0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
DrawString()//析构函数
{
setSize(300,400);
btn1=new Button("显示字符串");
btn2=new Button("显示图形");
btn3=new Button("退出");
btn4=new Button("清屏");
setLayout(new FlowLayout());
add(btn1);
add(btn2);
add(btn3);
add(btn4);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
setVisible(true);
//setBackground(Color.white);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="退出")
{ System.exit(0);}
if(e.getActionCommand()=="显示图形")
{
// setSize(300,500);
b2= true;
// btn2.setEnabled(false);
counter++;
}
if(e.getActionCommand()=="显示字符串")
{
// setSize(300,500);
b1 = true;
}
if(e.getSource()==btn4)
{
b3=true;
}
repaint();
}
public void paint(Graphics g)//frame类里面的函数,继承过来的。
{
// super.paint(g);
if(b1==true){
Color c = g.getColor();
g.setColor(Color.red);
g.drawString("hello,september", 100, 200);
g.setColor(c);
}
if(b2==true){
Color c = g.getColor();
g.setColor(Color.red);
g.drawOval(60, 100, 200, 200);
System.out.print(counter);
g.setColor(c);
}
if(b3==true){
g.setColor(getBackground());
b1=false;
b2 = false;
b3 = false;
}
}
public static void main(String[] args) {
new DrawString();
}
}
我帮你调试了一下,看看是不是你想要的效果!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询