我正在研究我的程序的接口,而我最近才能够绘制我想要的。我有一定数量的圆角矩形,每个圆形矩形的中间都有一个数字,但我无法弄清楚如何才能让这些矩形填充某种颜色,然后是边框线。除此之外,我需要在var内部储存每个矩形,以便能够改变矩形的颜色。这是我到目前为止的代码:如何只填充圆角矩形的颜色并将其保存在Java中的var
package game;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JPanel;
public class GameNumView extends JPanel
{
//Nombres affiché
String[] Numbers;
public GameNumView(int pWidth, int pHeight)
{
//Change ajuste la grosseur du panel
this.setPreferredSize(new Dimension(pWidth, pHeight));
//Crée le tableau des strings
Numbers = new String[]{};
}
@Override
public void paintComponent(Graphics g)
{
//Repain avec la super class
super.paintComponent(g);
//Calcule les dimensions qui seront utilisé
int rectSpace = 5;
int rectWidth = getWidth()/Numbers.length-rectSpace*2;
int rectHeight = getHeight()-rectSpace*2;
int arcRect = 15;
int fontSize = 60;
int textX = rectWidth/2 - fontSize/4 - rectSpace;
int textY = rectHeight/2 + fontSize/2 - rectSpace;
//Change al font
g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
//Dessine un rounded rectangle avec le nombre pour chaque chiffre du tableau
for(int i =0; i < Numbers.length; i++)
{
g.setColor(Color.red);
g.drawRoundRect(rectSpace + i*(rectWidth + rectSpace*2), rectSpace, rectWidth, rectHeight, arcRect, arcRect);
g.setColor(Color.black);
g.drawString(Numbers[i], rectSpace + textX + i*(rectWidth + rectSpace*2), textY + rectSpace);
}
}
public void setNumbers(String[] pNumbers)
{
//Stock les numbres choisis
Numbers = pNumbers;
}
public void changeColor(Color pColor)
{
//Change the background color
}
}
+0
*“我需要去购买每个矩形和var中的文本能够改变矩形的颜色并读取写在里面的数字。*“ - 为什么这么程序化?一个矩形类也可以做得很好:) –
+0
嗯,我不知道有这样的事情,但是如果我可以使用圆角矩形类来绘制它们并存放圆角矩形,那么你能告诉我怎么做吗? –
+0
我能想到一些简单的,甚至可能是厚脸皮的解决方案。可能不是最好的方式,但我会尽快将它作为答案发布。 - 也许会有帮助。 –