java - 如何向我的 fillRect 添加长文本?

标签 java swing graphics jtextarea

我正在开发一个将图钉添加到 map 的程序,图钉是一个类的子类,该类在 map 上绘制一个三角形并且可以点击,如果你点击它会展开并显示不同的东西,比如名字,文字或图片。

我有一个工作子类,它从三角形中创建一个矩形并显示该地点的名称。为此,我使用了 drawString。但是现在,对于我的第二个子类,它应该在这个地方显示一个描述,并且描述可能很长,为此我不能使用 drawString,因为它只显示在一行上,它会剪掉我的文本。 .

我尝试将描述添加到 JTextArea,并将其添加到 JScrollPane,然后我尝试将滚动 Pane 添加到矩形区域,但这似乎不起作用,因为“方法 add(JScrollPane)对于图形类型是未定义的”

这是我的父类(super class):

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

abstract public class Place extends JComponent {

private String name;
private int x,y;
boolean highlighted = false;
boolean hidden = false;
boolean showed = false;

public Place(int x, int y, String name){
    setBounds(x,y,30,30);
    this.name=name;
    this.x=x-15;
    this.y=y-30;
    Dimension d = new Dimension(30,30);
    setPreferredSize(d);
    setMaximumSize(d);
    setMinimumSize(d);
    addMouseListener(new MouseLis());
}

abstract protected void show(Graphics g);

protected void paintComponent(Graphics g){
    super.paintComponent(g);
//      g.setColor(Color.BLACK);
    if(!showed){
    setBounds(x,y,30,30);
    int[] xes = {0,15,30};
    int[] yes = {0,30,0};
    g.fillPolygon(xes, yes, 3);
    } else {
        show(g);


    }



}

public int getX() {
    return x;
}

public int getY() {
    return y;
}

public String getName() {
    return name;
}


class MouseLis extends MouseAdapter{
    @Override
    public void mouseClicked(MouseEvent mev){
        showed = ! showed;
        repaint();
    }
}

}

这是我的子类,它不起作用..

class DescPlace extends Place{

private String Description;
private JTextArea desc = new JTextArea(Description);


public DescPlace(int x, int y, String name, String descr){
    super(x,y,name);
    this.Description = descr;
}

protected void show(Graphics g){
    setBounds(getX(), getY(),150,200);
    g.setColor(Color.YELLOW);
    g.fillRect(0, 0, 150, 200);
    //g.add(new JScrollPane(desc));


}
}

最佳答案

您可以使用相同的 JTextArea 并使用 Graphics 实例绘制它

desc.setSize(width, height); //define size
desc.paintAll(g); //paint

关于java - 如何向我的 fillRect 添加长文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29895057/

相关文章:

C# Graphics.Clear(Color.Transparent) 无法正常工作?

OpenGL - 如何将 Sprite 的遮挡区域显示为轮廓

java - 单击按钮时在 JPanel 中加载图像

java - 单击按钮创建不同的 jLabel

java - 如何将 JPanel 图形添加到 JFrame 而不覆盖 JFrame

java - 使用数组列表提取数据时尝试在空对象引用上调用虚拟方法 'java.lang.String'

r - 在 R 中高效绘制数亿个点

Java 相当于 Kotlin 的 arrayof()/listof()/setof()/mapof()

java - 在矩形流中进行快速点搜索

java - Mule - 出站端点消息负载异常为 : byte[] 类型