我有如下因素定制的JPanel,我已经使用NetBeans GUI构建它交锋到我的框架,但背景不会改变! 我可以看到圆圈,用g.fillOval图()。 怎么了?
public class Board extends JPanel{
private Player player;
public Board(){
setOpaque(false);
setBackground(Color.BLACK);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillOval(player.getxCenter(), player.getyCenter(), player.getRadius(), player.getRadius());
}
public void updatePlayer(Player player){
this.player=player;
}
}
如果您的面板“不是不透明”(透明),你不会看到你的背景颜色。
你必须调用super.paintComponent();
还有,允许的Java API绘制原始背景。 超级指的是原来的JPanel的代码。
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillOval(player.getxCenter(), player.getyCenter(), player.getRadius(), player.getRadius());
}
我只是想一个最基本的实现,它只是工作:
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello");
frame.setPreferredSize(new Dimension(200, 200));
frame.add(new Board());
frame.pack();
frame.setVisible(true);
}
}
public class Board extends JPanel {
private Player player = new Player();
public Board(){
setBackground(Color.BLACK);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillOval(player.getCenter().x, player.getCenter().y,
player.getRadius(), player.getRadius());
}
}
public class Player {
private Point center = new Point(50, 50);
public Point getCenter() {
return center;
}
private int radius = 10;
public int getRadius() {
return radius;
}
}
您需要在董事会构造函数来创建一个新JPanel对象。 例如
public Board(){
JPanel pane = new JPanel();
pane.setBackground(Color.ORANGE);// sets the background to orange
}
为了彻底将背景设置为指定颜色:
1)设置的第一背景色
2)调用方法 “清除(0,0,this.getWidth(),this.getHeight())”(宽度和组分涂料区域的高度)
我认为这是基本的程序设置背景......我有同样的问题。
另一个有用的提示:如果你想画而不是在一个特定的区域(像一个面具或一个“洞”的东西),调用图形的setClip的()方法与“孔”形状(任意形状),然后调用Clear()方法(背景应预先设置为“洞”的颜色)。
你可以通过调用方法夹子()(你想要的任何时间)后调用方法SetClip()有裁剪形状的十字路口做出更复杂的剪辑区域。
我没有找到工会或夹子区,只有路口,太糟糕的反转任何方法...
希望能帮助到你