代码之家  ›  专栏  ›  技术社区  ›  Kévin Duguay

如何在类扩展JPanel中使用文本绘制圆角矩形

  •  2
  • Kévin Duguay  · 技术社区  · 9 年前

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

    我已经在寻找解决方案一段时间了,我找到的所有答案要么太复杂,我无法理解,要么就是不适用于我的案例。

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

    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
    
        }   
    }
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   Yassin Hajaj    9 年前

    我会给你正确的道路。这取决于您如何使其适应现有代码。

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

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

    MyFrame类:

    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();
        }
    }
    

    这里是MyPanel类:

    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);
        }
    
    }
    

    下面是一张你应该拥有的图片:

    My Fake Button !