繁体   English   中英

java swing 设置框架背景颜色不起作用

[英]java swing setting frame background color not working

我正在尝试使用 java swing 创建井字游戏。 我创建了一个框架并将其背景设置为一种颜色。 问题是框架的背景颜色没有改变,我尝试使用其他 colors 但背景颜色总是白色。 这是代码:

public class TicTacToe implements ActionListener {
    Random random = new Random();
    JFrame frame = new JFrame();
    JPanel title_panel = new JPanel();
    JPanel button_panel = new JPanel();
    JLabel textField = new JLabel();
    JButton[] button = new JButton[9];
    boolean player1_turn;

    TicTacToe () {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,800);
        frame.setVisible(true);
        frame.setTitle("Tic Tac Toe");
        frame.setLayout(new BorderLayout());
        frame.getContentPane().setBackground(Color.BLACK);


        textField.setBackground(new Color(0x084887));
        textField.setForeground(new Color(0xF58A07));
        textField.setText("Tic-Tac-Toe");
        textField.setFont(new Font("Ink Free",Font.BOLD,75));
        textField.setOpaque(true);
        textField.setHorizontalAlignment(JLabel.CENTER);


        title_panel.setLayout(new BorderLayout());
        title_panel.setBounds(0,0,800,100);


        title_panel.add(textField, BorderLayout.NORTH);
        frame.add(title_panel);
    }
}

您尝试设置内容窗格的背景:

frame.getContentPane().setBackground(Color.BLACK);

但随后您将“标题面板”添加到框架中:

frame.add(title_panel);

所以你的标题面板完全覆盖了内容面板。 您需要设置标题面板的颜色。

代码的其他问题:

  1. 不要在组件上使用 setBounds()。 布局管理器将确定每个组件的大小/位置。
  2. 您应该只在所有组件都添加到框架之后调用 setVisible(...) 方法。
  3. 在使框架可见之前,您应该pack()框架。 这将确保所有组件都以其首选尺寸显示。
  4. GUI 应在Event Dispatch Thread (EDT)上创建。

阅读Swing 教程 Concurrency部分将解释为什么这很重要。 本教程中的所有示例都将演示如何确保代码在 EDT 上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM