0

paintComponent(Graphics) 被覆盖。但是当我启动程序时,它只显示旧的另一个窗口的内容,该窗口位于我的应用程序窗口的位置。我尝试最小化、最大化、单击、键入和几个这样的东西,但它保持不变

代码请求的答案 好的,这里是类的代码。它不是主类,主类不同。包装展示;

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;import java.io.*;
import java.awt.event.*;//@Suppress Warnings 'unused' to Board
import Working.*;


public class Board extends JPanel implements Const{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public int UDocks, CDocks, URun, CRun, UC, CC;
    public boolean isToss, isBat, isOdd;
    public ENGINE engine;
    public BufferedImage one, two, three, four, five, six, dock, Null;
    public int STATUS;

    public BufferedImage UHand, CHand;
    public String temp;
    public JFrame Final;public Dimension preferredsize=new Dimension(BOARD_WIDTH, BOARD_HEIGHT);

    public Board(){
        engine=new ENGINE(this);
        UDocks=CDocks=3;
        URun=CRun=UC=CC=0;

        this.STATUS=GAME_STARTED;
        this.addKeyListener(engine);this.setBackground(Color.green);

    }
    @Override
    public void paintComponent(Graphics graph)
    {
        super.paintComponent(graph);
        JOptionPane.showConfirmDialog(null, "HI", "HU", JOptionPane.PLAIN_MESSAGE);


        graph.setColor(Color.black);

        String a;
        if(STATUS==GAME_STARTED){
            graph.setColor(Color.green);
            graph.fillRect(0, 0, BOARD_WIDTH, BOARD_HEIGHT);graph.setColor(Color.black);
            engine.StartGame();
            STATUS = Const.GAME_FIRST_INNINGS ;
            this.requestFocus();
            }
        if(STATUS!=GAME_ENDED){
            if(isToss&&isBat)a="User won the toss and decided to bat first";
            else if(isToss&&!isBat)a="User won the toss and decided to bowl first";
            else if(!isToss&&!isBat)a="CPU won the toss and decided to bat first";
            else a="CPU won the toss and decided to bowl first";

            graph.drawString(a, 112, 54);
            graph.drawString("User Number",  192, 153);
            graph.drawString("Computer Number", 675, 142);
            if(STATUS==GAME_FIRST_INNINGS)
                a="Innings No.1\t Batting"+(isBat?"User\n":"CPU\n")+"Score:"+(isBat?URun:CRun)+"\tDocks:"+(isBat?UDocks:CDocks);
            else a="Innings No.2\t Batting"+(isBat?"CPU\n":"User\n")+"Score:"+(isBat?CRun:URun)+"\tDocks"+(isBat?CDocks:UDocks)+"\nTarget:"+(isBat?URun+1:CRun+1);
            graph.drawString(a, 600, 46);
            graph.drawImage(UHand, 130, 180, 493, 608, this);
            graph.drawImage(CHand, 618, 180, 980, 606, this);this.requestFocus();
        }
        else
        {

            if(isOdd)temp="User selected ODD during toss";else temp="User selected EVEN during toss";
            if(isToss){
                temp.concat("\nUser won the toss and chosed to");
                temp.concat((isBat?"Bat first":"Bowl first"));
            }else{
                temp.concat("\nCPU won the toss and elected to");
                temp.concat((isBat?"Bowl first":"Bat first"));
                }
            if(isBat)
            {
                temp.concat("\nUser scored "+URun);
                temp.concat("\nCPU scored "+CRun);
            }else{temp.concat("\nCPU scored "+CRun);temp.concat("\nUser scored "+URun);}
            if(CRun>URun)temp.concat("\nCPU won");
            else temp.concat("\nUser won");
            JOptionPane.showConfirmDialog(null, temp, "Match Summary", JOptionPane.PLAIN_MESSAGE);this.requestFocus();
        }






    }
    public boolean inttobool(int h)
    {
        if(!(h==0))return true;else return false;
    }
    public int booltoint(boolean h)
    {
        if(h)return 1;else return 0;
    }
    @Override
    public Dimension getPreferredSize()
    {
        return preferredsize;
    }
    public void addPaneltoFrame(Container cont)
    {
        cont.setLayout(new BorderLayout());
        cont.add("Center", this);

    }
}

这是Const接口的代码

package display;

public interface Const {
    public final int GAME_STARTED=10;
    public final int GAME_TOSS_OVER=20;
    public final int GAME_FIRST_INNINGS=30;
    public final int GAME_SECOND_INNINGS=40;
    public final int GAME_ENDED=50;
    public final boolean TOSS_USER=true;
    public final boolean TOSS_CPU=false;
    public final boolean FIRST_USER=true;
    public final boolean FIRST_CPU=false;
    public final int BOARD_WIDTH=1150;
    public final int BOARD_HEIGHT=680;
    public final int HAND_WIDTH=360;
    public final int HAND_HEIGHT=425;
    public final boolean GAME_NEEDS_SAVING=true;
    public final boolean GAME_NEEDNOT_SAVE=false;
    public int booltoint(boolean h);
    public boolean inttobool(int h);
}

这是Main的代码

package display;
import javax.swing.*;
public class Main {
    public static void main(String []args){
        JFrame Fram=new JFrame("Hand Cricket By S.GOVIND BALAJI");
        Fram.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        Board h=new Board();
        h.repaint();
        h.addPaneltoFrame(Fram.getContentPane());
        Fram.pack();
        Fram.setVisible(true);

    }
}

这是开始的代码

package display;

     import java.awt.event.*;
     import java.awt.*;

    import javax.swing.*;
    import Working.*;


    public class Start implements Const, ActionListener, KeyListener {
private JFrame Final;
private JPanel pan, jan;
private JLabel Text;
private JButton Odd, Even;
private ENGINE child;private boolean ISOdd, ISBat, Waiting=false, ISToss;
private int UNum, CNum;

public Start(ENGINE child)
{
    this.child=child;
    pan=new JPanel(new BorderLayout());jan=new JPanel(new BorderLayout());
    Text=new JLabel("It's time for the toss.\n\t\t\t Odd or Even?");
    Odd=new JButton("Odd");
    Even=new JButton("Even");
    Odd.addActionListener(this);
    Even.addActionListener(this);
    jan.add("West", Odd);
    jan.add("East", Even);
    pan.add("North", Text);
    pan.add("South", jan);
    Final=new JFrame("Welcome, Toss");
    Final.setContentPane(pan);
    Final.pack();

    Final.setBackground(Color.pink);
    Text.setForeground(Color.GREEN);Odd.setForeground(Color.GREEN);Odd.setForeground(Color.GREEN);  Final.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent src) {
    JButton main;
    main=(JButton)src.getSource();
    if(!Waiting){
    if(main==Odd)

        ISOdd=true;
    else 
        ISOdd=false;
    Waiting=true;
    Final.setVisible(false);
    Text.setText("Ok, Type the number for toss");
    Odd.setVisible(false);
    Even.setVisible(false);
    Final.setVisible(true);
    }else
    {
        ISBat=false;
        if(main==Odd)
            ISBat=true;

        this.child.child.isBat=ISBat;
        child.child.isToss=ISToss;
        child.child.isOdd=ISOdd;
        Final.setVisible(false);try{
            this.child.Toss_OVER=true;
        }catch(Throwable th){}
    }
}

@Override
public int booltoint(boolean h) {
    if(h)
    return 1;else return 0;

}
@Override
public boolean inttobool(int h) {
    if(h==1)return true;else return false;
}
@Override
public void keyPressed(KeyEvent arg) {
    if(!Waiting)
        return;
    UNum=Static.CharToInt(arg.getKeyChar());
    CNum=Static.Fluke(0, 6);
    ISToss=false;
    if(CNum+UNum%2==booltoint(ISOdd)){
        JOptionPane.showConfirmDialog(null, "You won the Toss\nComputer put"+CNum+"\nYou Put"+UNum+"\nYour Call"+(ISOdd?"Odd":"Even")
                +"\nActuall Result"+(ISOdd?"Odd":"Even")
                , "Toss Result", JOptionPane.PLAIN_MESSAGE);
        ISToss=true;
        Final.setVisible(false);
        Text.setText("Choose to bat or bowl");
        Odd.setText("Bat");
        Even.setText("Bowl");
        Odd.setVisible(true);
        Even.setVisible(true);
        Final.setVisible(true);
    }else{
        JOptionPane.showConfirmDialog(null, "You lost in the Toss\nComputer put"+CNum+"\nYou Put"+UNum+"\nYour Call"+(ISOdd?"Odd":"Even")
                +"\nActuall Result"+(ISOdd?"Even":"Odd")
                , "Toss Result", JOptionPane.PLAIN_MESSAGE);
        ISToss=false;
        ISBat=inttobool(Static.Fluke(0, 1));
        JOptionPane.showConfirmDialog(null, "Computer decided to "+(ISBat?"bat":"bowl")+"first", "Choosed", JOptionPane.PLAIN_MESSAGE);
    }
}
@Override
public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

}

图像在正确的目录这是引擎的代码

package Working;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JOptionPane;

import display.*;

public class ENGINE implements KeyListener, Const {
    //DATA MEMBERS
    public  Board child;public Start Toss;
    public boolean Toss_OVER=false;
    //heloo


    public ENGINE(Board paremnt){
        this.child=paremnt;

    }
    public void StartGame(){
        Toss=new Start(this);
        while(!Toss_OVER){}
        return;


    }

/*INHERITED INTERFACE IMPLEMENTATION*/
    @Override
    public int booltoint(boolean h) {
        if(h)
        return 1;else return 0;

    }
    @Override
    public boolean inttobool(int h) {
        if(h==1)return true;else return false;
    }
    @Override
    public void keyPressed(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void keyTyped(KeyEvent KE) {
        int Key=Static.CharToInt(KE.getKeyChar()), CKey;
        //User first batting& First Innings
        //*/*/*/*/*/*/*/***-*-*-*-*-*-*-*-*-*-
        //-*---*--*--*-*-*--*-*-*-*-*-*-*-*-*-*-
        //@Minimize
        //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
        if(child.isBat&&child.STATUS==GAME_FIRST_INNINGS){
        switch(Key)
        {
        case '0':if(child.UDocks==0){JOptionPane.showConfirmDialog(null, "You have no docks remaining.Type Again", "Warning", JOptionPane.WARNING_MESSAGE);return;}
            child.UDocks--;
            child.UHand=child.dock;
            break;
        case '1':
            child.UHand=child.one;
            break;
        case '2':
            child.UHand=child.two;
            break;
        case '3':
            child.UHand=child.three;
            break;
        case '4':
            child.UHand=child.four;
            break;
        case '5':
            child.UHand=child.five;
            break;
        case '6':
            child.UHand=child.six;
            break;

        }CKey=Static.Fluke(0, 6);
        switch(CKey)
        {
        case '0':
            child.CHand=child.dock;
            break;
        case '1':
            child.CHand=child.one;
            break;
        case '2':
            child.CHand=child.two;
            break;
        case '3':
            child.CHand=child.three;
            break;
        case '4':
            child.CHand=child.four;
            break;
        case '5':
            child.CHand=child.five;
            break;
        case '6':
            child.CHand=child.six;
            break;

        }

        child.repaint();
        if((Key==CKey))
        {
            JOptionPane.showConfirmDialog(null, "You are out", "Wicket", JOptionPane.PLAIN_MESSAGE);
            child.STATUS=GAME_SECOND_INNINGS;
            child.repaint();
            return;
        }
        else
        {
            if(Key==0)
                child.UC=CKey;
            else
                child.UC=Key;
            child.URun+=child.UC;child.repaint();
        }       
        }
        //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
        /*-*--*-*-*-*-*-*----*-*--*-*-**-*-*-*
         User First Batting&&&&&&Second INNINGS
         *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
         */
        else if(child.isBat&&child.STATUS==GAME_SECOND_INNINGS)
        {

                switch(Key)
                {
                case '0':
                    child.UHand=child.dock;
                    break;
                case '1':
                    child.UHand=child.one;
                    break;
                case '2':
                    child.UHand=child.two;
                    break;
                case '3':
                    child.UHand=child.three;
                    break;
                case '4':
                    child.UHand=child.four;
                    break;
                case '5':
                    child.UHand=child.five;
                    break;
                case '6':
                    child.UHand=child.six;
                    break;

                }
                if(child.CDocks!=0)
                CKey=Static.Fluke(0, 6);else CKey=Static.Fluke(1, 6);
                switch(CKey)
                {
                case '0':
                    child.CHand=child.dock;
                    break;
                case '1':
                    child.CHand=child.one;
                    break;
                case '2':
                    child.CHand=child.two;
                    break;
                case '3':
                    child.CHand=child.three;
                    break;
                case '4':
                    child.CHand=child.four;
                    break;
                case '5':
                    child.CHand=child.five;
                    break;
                case '6':
                    child.CHand=child.six;
                    break;

                }

                child.repaint();
                if((Key==CKey))
                {
                    JOptionPane.showConfirmDialog(null, "Computer is out", "Wicket", JOptionPane.PLAIN_MESSAGE);
                    child.STATUS=GAME_ENDED;
                    child.repaint();
                    return;
                }
                else
                {
                    if(Key==0)
                        child.CC=Key;
                    else
                        child.CC=CKey;
                    child.CRun+=child.CC;child.repaint();
                    if(child.CRun>child.URun)child.STATUS=GAME_ENDED;
                }       

        }





        //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
        /*-*--*-*-*-*-*-*----*-*--*-*-**-*-*-*
         User Second Batting&&&&&&Second INNINGS
         *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
         */



        else if(!child.isBat && child.STATUS==GAME_SECOND_INNINGS){
            switch(Key)
            {
            case '0':if(child.UDocks==0){JOptionPane.showConfirmDialog(null, "You have no docks remaining.Type Again", "Warning", JOptionPane.WARNING_MESSAGE);return;}
                child.UDocks--;
                child.UHand=child.dock;
                break;
            case '1':
                child.UHand=child.one;
                break;
            case '2':
                child.UHand=child.two;
                break;
            case '3':
                child.UHand=child.three;
                break;
            case '4':
                child.UHand=child.four;
                break;
            case '5':
                child.UHand=child.five;
                break;
            case '6':
                child.UHand=child.six;
                break;

            }CKey=Static.Fluke(0, 6);
            switch(CKey)
            {
            case '0':
                child.CHand=child.dock;
                break;
            case '1':
                child.CHand=child.one;
                break;
            case '2':
                child.CHand=child.two;
                break;
            case '3':
                child.CHand=child.three;
                break;
            case '4':
                child.CHand=child.four;
                break;
            case '5':
                child.CHand=child.five;
                break;
            case '6':
                child.CHand=child.six;
                break;

            }

            child.repaint();
            if((Key==CKey))
            {
                JOptionPane.showConfirmDialog(null, "You are out", "Wicket", JOptionPane.PLAIN_MESSAGE);
                child.STATUS=GAME_ENDED;
                child.repaint();
                return;
            }
            else
            {
                if(Key==0)
                    child.UC=CKey;
                else
                    child.UC=Key;
                child.URun+=child.UC;child.repaint();
                if(child.URun>child.CRun)child.STATUS=GAME_ENDED;
            }       
            }
        //User second batting& First Innings
                //*/*/*/*/*/*/*/***-*-*-*-*-*-*-*-*-*-
                //-*---*--*--*-*-*--*-*-*-*-*-*-*-*-*-*-
                //@Minimize
                //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
        else if(!child.isBat&&child.STATUS==GAME_FIRST_INNINGS)
        {

                switch(Key)
                {
                case '0':
                    child.UHand=child.dock;
                    break;
                case '1':
                    child.UHand=child.one;
                    break;
                case '2':
                    child.UHand=child.two;
                    break;
                case '3':
                    child.UHand=child.three;
                    break;
                case '4':
                    child.UHand=child.four;
                    break;
                case '5':
                    child.UHand=child.five;
                    break;
                case '6':
                    child.UHand=child.six;
                    break;

                }
                if(child.CDocks!=0)
                CKey=Static.Fluke(0, 6);else CKey=Static.Fluke(1, 6);
                switch(CKey)
                {
                case '0':
                    child.CHand=child.dock;
                    break;
                case '1':
                    child.CHand=child.one;
                    break;
                case '2':
                    child.CHand=child.two;
                    break;
                case '3':
                    child.CHand=child.three;
                    break;
                case '4':
                    child.CHand=child.four;
                    break;
                case '5':
                    child.CHand=child.five;
                    break;
                case '6':
                    child.CHand=child.six;
                    break;

                }

                child.repaint();
                if((Key==CKey))
                {
                    JOptionPane.showConfirmDialog(null, "Computer is out", "Wicket", JOptionPane.PLAIN_MESSAGE);
                    child.STATUS=GAME_SECOND_INNINGS;
                    child.repaint();
                    return;
                }
                else
                {
                    if(Key==0)
                        child.CC=Key;
                    else
                        child.CC=CKey;
                    child.CRun+=child.CC;child.repaint();
                }       

        }
        }
    }

这是静态的代码

package Working;

public class Static {
    public static double Fluke(double x, double y)
    {
        double h;
        h=Math.random() * (y-x);
        h+=x;
        return h;
    }
    public static int Fluke(int x, int y)
    {
        int h;
        h=(int)Math.random() * (y-x);
        h+=x;
        return h;
    }
    public static float Fluke(float x, float y)
    {
        float h;
        h=(float)Math.random() * (y-x);
        h+=x;
        return h;
    }
    public static int CharToInt(char x)
    {
        switch(x)
        {
        case '0':
            return 0;           
        case '1':
            return 1;
        case '2':return 2;
        case '3':return 3;
        case '4':return 4;
        case '5':return 5;
        case '6':return 6;
        default:return 6;
        }
    }
}
4

1 回答 1

0

操作后尝试调用repaint()updateUI()方法。

于 2012-12-06T12:13:35.420 回答