gpt4 book ai didi

java - 面板没有边框

转载 作者:行者123 更新时间:2023-12-02 12:13:32 26 4
gpt4 key购买 nike

我正在开发一个项目,并且刚刚开始使用 GUI。因为这不是我最喜欢的主题,所以我很快就发现了一些不太正常的东西。所有内容(PacmanGrid、PacmanScore)都显示正确,但我为 PacmanScore 面板编写的边框!无论如何,这是代码,希望有人能帮忙。

public class PacmanFrame extends JFrame{



public PacmanFrame() {
this.setLayout(new BorderLayout());
this.setTitle("Pacman");
PacmanGrid p1=new PacmanGrid();
PacmanScore p2 = new PacmanScore();


this.add(p1,BorderLayout.CENTER);
this.add(p2,BorderLayout.EAST);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
super.repaint();
pack();
super.setVisible(true);


}


public static void main(String[] args) {
PacmanFrame p1 = new PacmanFrame();
}

}

吃 bean 人得分

public class PacmanScore extends JPanel{
private TitledBorder t3 = BorderFactory.createTitledBorder("Menu");
private Border etched = BorderFactory.createEtchedBorder(Color.WHITE, Color.white);


public PacmanScore() {
setLayout(new FlowLayout());
setPreferredSize(new Dimension(100,800));
setBackground(Color.DARK_GRAY);
t3.setBorder(etched);
setBorder(t3);

setVisible(true);
setOpaque(true);


}

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
super.paintComponent(g2);
g2.setColor(Color.white);
g2.drawString("Score: ", 20, 400);

}

}

PacmanGrid 也由面板扩展,并使用预定义的模式绘制经典的 PacmanGrid。但我认为这无关紧要,因为问题显然在 PacmanScore 面板上。如果有人需要的话我会发布代码。提前致谢!

最佳答案

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
super.paintComponent(g2);
g2.setColor(Color.white);
g2.drawString("Score: ", 20, 400);

}

您没有正确重写paint(),因为您没有调用super.paint(),因此未绘制边框。

不要重写paint()。自定义绘制是通过重写 paintComponent() 来完成的。

阅读 Swing 教程中关于 A Closer Look at the Paint Mechanism 的部分了解更多信息。

你为什么还要进行定制绘画?只需将 JLabel 添加到面板即可。

此外,Swing 组件(顶级窗口除外)默认情况下是可见的,因此无需使面板可见。

关于java - 面板没有边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com