简体   繁体   中英

Change JFrame background color

Created a JFrame and tried to change the background but it does not work. I have looked at so many solutions here and on the Internet and it doesnt work , What is wrong in my code

 JFrame frame = new JFrame("Process");
       JLabel label = new JLabel("Please wait...");
       JProgressBar pb = new JProgressBar();
       pb.setIndeterminate(true);
       pb.setBackground(new java.awt.Color(248, 201, 171));

       frame.setBackground(new java.awt.Color(242, 186, 152));
       frame.setSize(400, 200);
       frame.setLocationRelativeTo(null);

       JPanel panel = new JPanel();
       panel.setBackground(new java.awt.Color(242, 186, 152));

       GridBagConstraints c = new GridBagConstraints();

       c.insets = new Insets(10,10,10,10); // make spaces between components on screen
       c.gridx = 0;
       c.gridy = 0;
       c.gridwidth = 20;
       panel.add(label, c);
       c.gridx = 1;
       c.gridy = 1;
       c.gridwidth = 20;

       panel.add(pb, c);
       frame.add(panel);
       frame.setVisible(true);

尝试frame.getContentPane().setBackground(new java.awt.Color(242, 186, 152));

don't work on the frame, work on the frame.getContentPane(). This is also where your sub panel and layout should be set. Besides, you use gridbag constraints but you never set a gridbag layout first. Meanwhile, you add to the frame and even if you did add to the content pane, you also didn't specify a content pane layout.

After doing changes in my code I found that the problem is caused by the GridBagConstraints c = new GridBagConstraints(); so i changed this by using panel.setLayout(null); then used setBounds to adjust the position of the components label.setBounds(100, 30, 250, 10); and everything os ok

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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