的JPanel的setBackground(Color.BLACK)什么都不做(JPanel set

2019-06-23 14:36发布

我有如下因素定制的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;
    }
}

Answer 1:

如果您的面板“不是不透明”(透明),你不会看到你的背景颜色。



Answer 2:

你必须调用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());
}


Answer 3:

我只是想一个最基本的实现,它只是工作:

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


Answer 4:

您需要在董事会构造函数来创建一个新JPanel对象。 例如

public Board(){
    JPanel pane = new JPanel();
    pane.setBackground(Color.ORANGE);// sets the background to orange
} 


Answer 5:

setOpaque(false); 

变成

setOpaque(true);


Answer 6:

为了彻底将背景设置为指定颜色:

1)设置的第一背景色

2)调用方法 “清除(0,0,this.getWidth(),this.getHeight())”(宽度和组分涂料区域的高度)

我认为这是基本的程序设置背景......我有同样的问题。

另一个有用的提示:如果你想画而不是在一个特定的区域(像一个面具或一个“洞”的东西),调用图形的setClip的()方法与“孔”形状(任意形状),然后调用Clear()方法(背景应预先设置为“洞”的颜色)。

你可以通过调用方法夹子()(你想要的任何时间)后调用方法SetClip()有裁剪形状的十字路口做出更复杂的剪辑区域。

我没有找到工会或夹子区,只有路口,太糟糕的反转任何方法...

希望能帮助到你



文章来源: JPanel setBackground(Color.BLACK) does nothing