0

私は Java をあまり長い間学んでいないので、申し訳ありませんが、アプレットを作成するように依頼されました。その基本機能の 1 つは、ユーザーがテキスト ボックスに入力し、アプレットがユーザーの書き込みを表示できるようにすることです。私の2つのイニシャル(G、P)のいずれの場合でも、プログラムはこの文字を書く代わりに、そのポリゴンを塗りつぶす必要があります.

明らかに、毎回同じ座標でこのポリゴンを作成することはできないので、最初のポイントの変数を作成し、アプレットにキャラクターの座標を受け取るようにするという、うまくいくと思われる方法を使用しました ( for を介して)ループ)そしてポリゴンを表示します。私が抱えている主な問題は、ポリゴンが別の関数であり、識別子が期待されると言い続けることです。これを取り除くために、変数xpoints、ypoints、およびnpointsが初期化される場所を変更しました。もはやグローバルではありません。しかし、今では、(ポリゴン関数の)ステートメントではなく、「;」という60個のエラーが発生します。期待される。何か助けて??

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.font.*;
import java.io.*;
import java.util.regex.*;
import java.awt.color.*;

import java.net.*;
import java.awt.geom.*; 

public class assignment extends Applet implements MouseListener,ActionListener {
    int gx;
    int gy;
    int px;
    int py;
    char c;
    int i;

    String replaced;
    char sl1='G';
    String sl2="P";
    String pr_name;
    String pr_styleType;
    Label pr_label;
    TextField pr_text;
    TextField pr_style;

    Label pr_textInput;
    Label pr_textStyle;

    public void init(){
        pr_label= new Label ("Enter text you would like to display!");
        add(pr_label);

    pr_textInput= new Label ("Text:");
        add(pr_textInput);

    pr_textStyle= new Label ("Style:");
        add(pr_textStyle);

        pr_text= new TextField(20);
        add (pr_text);
        pr_text.addActionListener(this);
        addMouseListener(this);

        pr_style= new TextField(5);
        add (pr_style);
        pr_style.addActionListener(this);
        addMouseListener(this);
    }

    public void start() {
        setSize(800,800);
    setBackground( new Color(125,158,192) );
        pr_name="";
        pr_styleType="";
    }

    public void paint (Graphics g) {
        pr_label.setLocation(100,0);
        pr_textStyle.setLocation(275,50);
    pr_textInput.setLocation(50,50);
        pr_text.setLocation(100,50);
    pr_style.setLocation(325,50);

    g.setColor(Color.white);
    Font font = new Font("Arial",Font.BOLD,20);
    g.setFont(font);

    for (i=0; i<pr_name.length(); i++) {
            c=pr_name.charAt(i);

        if (c == sl1) {
        drawGPolygon(xpoints,ypoints,npoints);
            }
    }            

    }   

    public void mouseClicked(MouseEvent e){}


    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}

    public void actionPerformed(ActionEvent e) {
        //set ActionCommand
    if (e.getSource()== pr_text) {
            pr_name =e.getActionCommand();
    }
    else if (e.getSource()==pr_style) {
            pr_styleType=e.getActionCommand();
    }

    //set Style 
    repaint();
    }

    public void drawGPolygon(int xpoints, int ypoints,int npoints) {
        gx=e.getX(c);
    gy=e.getY(c);
        xpoints[] = {gx, gx, gx+40, gx+40,gx+45,gx+45,gx+25,gx+25,gx+30,gx+30,gx+5,gx+5,gx+50,gx+50};
    ypoints[] = {gy, gy+50, gy+50, gy+30, gy+30,gy+20,gy+20,gy+30,gy+30,gy+40,gy+40,gy+10,gy+10,gy};
        npoints = 14;
        g.drawPolygon(xpoints, ypoints, npoints);
    }
}
4

1 に答える 1

1

基本的に、フォントのグリフを使用して、テキストを Shape に変換する必要があります。

java/swing: conversion a text string to a Shape を見てください。

于 2013-02-08T14:18:59.073 に答える