如何在 class 扩展 JPanel 中绘制带有文本的圆角矩形

How to draw a roundedRectangle with text inside a class extending JPanel

我是 Java 的新手,我正在尝试扩展 JPanel 的 class。我有一个 updateView() 方法,它假设在 JPanel 的中间绘制带有文本的圆角矩形。另外,我需要在 LinkedHashMap 中存储文本字段和圆角矩形。我已经为此得到了一个 var,我只是不知道 我需要使用的 var 类型。

我已经搜索了一段时间的解决方案,但我找到的所有答案要么对我来说太复杂,要么就是不适用于我的情况。

我知道这几乎什么都没有,但这是我到目前为止得到的...

package game;

import javax.swing.JPanel;

public class GameNumView extends JPanel
{

    private Map<Integer,Integer> backgroundText = new LinkedHashMap<"My rounded rectangle","My textfield">();

    public GameNumView()
    {

    }

    public void UpdateView(String[] pNumbers)
    {
        //Create the background

        //Create the text

    }   
}

我会给你正确的道路。您可以根据现有代码对其进行调整。

想法是将 Graphics 对象与扩展的 class JPanel 的 paintComponent 方法一起使用。

这是代码,我认为已经足够清楚了,但是如果您有任何问题,请不要犹豫。

MyFrame class :

public class MyFrame extends JFrame {
  public MyFrame(){             
    this.setTitle("Hello");
    this.setSize(200, 200);
    this.setLocationRelativeTo(null);               

    MyPanel pan = new MyPanel();
    pan.setBackground(Color.ORANGE);        
    this.setContentPane(pan);               
    this.setVisible(true);
  }      

  public static void main(String[] args) {
        MyFrame f = new MyFrame();
    }
}

这是我的面板 class :

public class MyPanel extends JPanel{

    @Override
    public void paintComponent(Graphics g) {
        g.setColor(Color.black);
        g.drawRoundRect(10, 10, this.getWidth()-20, this.getHeight()-20, 15, 15);
        g.setColor(Color.black);
        g.drawString("Hello", 75, 75);
    }

}

这是一张你应该拥有的照片: