修改java程序中的图形?

时间:2013-11-01 19:57:29

标签: java

我编写了以下java程序,但我似乎无法让它做我想要的。我想在java中创建两个框。在两个方框中都应该有一个绿色的盒子,里面包含一个人名和另一个盒子以及一个情绪盒子,当心情开心时它会变成红色,否则就是灰色。像这样我需要让我的Facebook_Graphics.java做

enter image description here

我写了下面的课,但我能做些什么。

import java.awt.*;


    import jpb.*;

    public class Facebook_Graphics{
       private String name;
       private String content;
       DrawableFrame df;
       private Graphics g;

       public Facebook_Graphics(String nm){
           content = "undefined";
           name = nm;        

           // Create drawable frame        
           df = new DrawableFrame(name);
           df.show();
           df.setSize(200, 150);

           // Obtain graphics context
           g = df.getGraphicsContext();

           // display name
           g.drawString(name+"'s mood is undefined.", 20, 75);

           // Repaint frame
           df.repaint();        
       }

       public void setContent(String newContent){
        content = newContent;

            if(content.equals("happy")){
                g.setColor(Color.red);        
                g.fillRect(0, 0, 200, 150);
                g.setColor(Color.black); 

                // display mood        
                g.drawString(name+"'s mood is:"+ "happy", 20, 75);
            }
            else{
                g.setColor(Color.white);
                g.fillRect(0, 0, 200, 150);
                g.setColor(Color.black);
                g.drawString(name+"'s mood is:"+ content, 20, 75);
            }
            // Repaint frame
            df.repaint();
       }

       public String getContent(){
        return content;
       }
    }


    public class FacebookPerson_Graphics{
      private String myName;
      private String myMood;
      private Facebook_Graphics myfacebook;

      public FacebookPerson_Graphics(String name){
          myName = name;
          myfacebook = new Facebook_Graphics(myName);
      }

      public String getName(){
          return myName;
      }

      public void setMood(String newMood){
         myMood = newMood;
         myfacebook.setContent(myMood);
      }

      public String getMood(){
          return myMood;
      }
    }




    import jpb.*;
    @SuppressWarnings( "deprecation" )
    public class testFacebook_Graphics{        
      public static void main (String[] args){
        // Prompt user to enter the number of facebookpresons
        SimpleIO.prompt("Enter the number of facebookpresons to be created: ");
        String userInput = SimpleIO.readLine();
        int numP = Integer.parseInt(userInput);

        FacebookPerson_Graphics[] fbp = new FacebookPerson_Graphics[numP];

        //Ask the user to enter the name for each person, and create the persons
        for(int i=0; i< numP; i++){
            SimpleIO.prompt("Enter the name for person "+ (i+1)+ ":");
            String name = SimpleIO.readLine();
            fbp[i] = new FacebookPerson_Graphics(name);
        }
        System.out.println("-------select a person and type the mood below--------");


        //Ask the user to set the mood for a person, and update the mood, enter "####" to exit
        while(true){
            SimpleIO.prompt("Enter the name for a person (enter #### to exit):");
            String name = SimpleIO.readLine();
            if(name.equals("####"))
                 System.exit(0);
            int personID = -1;
            for(int i=0; i< numP; i++){
                if(fbp[i].getName().equals(name)){
                    personID = i;
                    break;
                }
            }
            if(personID!=-1){  // found the person
                SimpleIO.prompt("Enter the mood for the person:");
                String mood = SimpleIO.readLine();
                fbp[personID].setMood(mood);
            }
            else
                System.out.println("unrecognized name!");
        } // end while

      } // end main

    }

1 个答案:

答案 0 :(得分:1)

将您的Facebook_Graphics课程更改为以下内容:

public class Facebook_Graphics {
    private String name;
    private String content;
    DrawableFrame df;
    private Graphics g;

    public Facebook_Graphics(String nm) {
        content = "undefined";
        name = nm;

        // Create drawable frame        
        df = new DrawableFrame(name);
        df.show();
        df.setSize(200, 150);

        // Obtain graphics context
        g = df.getGraphicsContext();
        drawLayout();
        df.repaint();
    }

    public void setContent(String newContent) {
        content = newContent;

        clearGraphics();
        drawLayout();

        // Repaint frame
        df.repaint();
    }
    private void clearGraphics() {
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, 200, 150);
    }
    private void drawLayout() {
        g.setColor(Color.BLACK);
        g.drawString("Name", 20, 40);
        g.drawString("Mood", 20, 90);

        g.setColor(Color.GREEN);
        g.fillRect(80, 20, 100, 30);

        g.setColor(getMoodColor());
        g.fillRect(80, 70, 100, 30);

        g.setColor(Color.BLACK);
        g.drawString(name, 90, 40);
        g.drawString(content, 90, 90);
    }

    private Color getMoodColor() {
        return "happy".equals(content) ? Color.RED : Color.GRAY;
    }

    public String getContent() {
        return content;
    }
}