Как изменить цвет jframe java

Just how do you set the background color for a JFrame?

Just how do you set the background color for a JFrame?

Laser Infinite's user avatar

asked Jul 4, 2009 at 4:26

Retrieve the content pane for the frame and use the setBackground() method inherited from Component to change the color.

Example:

myJFrame.getContentPane().setBackground( desiredColor );

answered Jul 4, 2009 at 4:30

Brandon E Taylor's user avatar

Brandon E TaylorBrandon E Taylor

24.6k6 gold badges46 silver badges70 bronze badges

To set the background color for JFrame:

getContentPane().setBackground(Color.YELLOW);  //Whatever color

answered Jul 4, 2009 at 4:33

iwanttoprogram's user avatar

using:

setBackground(Color.red);

doesn’t work properly.

use

Container c = JFrame.getContentPane();

c.setBackground(Color.red);

or

myJFrame.getContentPane().setBackground( Color.red );

Reins's user avatar

Reins

1,1091 gold badge17 silver badges35 bronze badges

answered Sep 12, 2015 at 8:07

darx's user avatar

darxdarx

1491 silver badge2 bronze badges

2

This is the simplest and the correct method. All you have to do is to add this code after initComponents();

getContentPane().setBackground(new java.awt.Color(204, 166, 166));

That is an example RGB color, you can replace that with your desired color. If you dont know the codes of RGB colors, please search on internet… there are a lot of sites that provide custom colors like this.

answered Jul 21, 2017 at 22:49

Cristian Babarusi's user avatar

To set the background color for the JFrame try this:

this.getContentPane().setBackground(Color.white);

luk2302's user avatar

luk2302

53.3k23 gold badges96 silver badges136 bronze badges

answered Jan 11, 2017 at 10:24

Mr. J's user avatar

Mr. JMr. J

711 silver badge1 bronze badge

2

Hello There I did have the same problem and after many attempts I found that the problem is that you need a Graphics Object to be able to draw, paint(setBackgroundColor).

My code usually goes like this:

import javax.swing.*;
import java.awt.*;


public class DrawGraphics extends JFrame{

    public DrawGraphics(String title) throws HeadlessException {
      super(title);
      InitialElements();
    }

    private void InitialElements(){
      setSize(300, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);
      // This one does not work
      // getContentPane().setBackground(new Color(70, 80, 70));

    }

    public void paint(Graphics draw){
      //Here you can perform any drawing like an oval...
      draw.fillOval(40, 40, 60, 50);

      getContentPane().setBackground(new Color(70,80,70));
    }
}

The missing part on almost all other answers is where to place the code.
Then now you know it goes in paint(Graphics G)

answered Aug 15, 2015 at 2:20

T04435's user avatar

T04435T04435

11.5k4 gold badges52 silver badges53 bronze badges

You can use a container like so:

Container c = JFrame.getContentPane();
c.setBackground(Color.red); 

You must of course import java.awt.Color for the red color constant.

Ankur's user avatar

Ankur

2,17123 silver badges29 bronze badges

answered Jul 4, 2009 at 4:32

John T's user avatar

John TJohn T

23.5k11 gold badges56 silver badges82 bronze badges

Here’s another method:

private void RenkMouseClicked(java.awt.event.MouseEvent evt) {
    renk = JColorChooser.showDialog(null, "Select the background color",
            renk);
    Container a = this.getContentPane();
    a.setBackground(renk);
}

I’m using netbeans ide. For me, JFrame.getContentPane() didn’t run. I used JFrame.getContentPane()‘s class equivalent this.getContentPane.

demongolem's user avatar

demongolem

9,33036 gold badges89 silver badges104 bronze badges

answered Nov 25, 2009 at 2:11

Abdullah's user avatar

0

you can override the paint method of JFrame and then fill that by your favorite color like this:

@Override
public void paint(Graphics g) {
    g.setColor(Color.red);
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
}

answered Mar 8, 2015 at 5:48

Mahdi Hasanpour's user avatar

I had trouble with changing the JFrame background as well and the above responses did not solve it entirely. I am using Eclipse. Adding a layout fixed the issue.

public class SampleProgram extends JFrame {
    public SampleProgram() {
        setSize(400,400);
        setTitle("Sample");
        getContentPane().setLayout(new FlowLayout());//specify a layout manager
        getContentPane().setBackground(Color.red);
        setVisible(true);
}

answered Jul 28, 2020 at 19:42

Debra's user avatar

DebraDebra

191 bronze badge

You can use this code block for JFrame background color.

    JFrame frame = new JFrame("Frame BG color");
    frame.setLayout(null);
    
    frame.setSize(1000, 650);
    frame.getContentPane().setBackground(new Color(5, 65, 90));
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setVisible(true);

answered Jan 9, 2021 at 5:36

mihmandar's user avatar

public nameOfTheClass()  {

final Container c = this.getContentPane();

  public void actionPerformed(ActionEvent e) {
    c.setBackground(Color.white); 
  }
}

answered Dec 11, 2017 at 18:35

Learning's user avatar

3

import java.awt.*;
import javax.swing.*;

public class MySimpleLayout extends JFrame {

        private Container c;
        public MySimpleLayout(String str) {
            super(str);
            c=getContentPane();
            c.setLayout(null);
            c.setBackground(Color.WHITE);
        }
}

Stephan's user avatar

Stephan

41.1k62 gold badges237 silver badges324 bronze badges

answered Nov 29, 2012 at 13:13

Pratik K's user avatar

1

Probably the SIMPLEST method is this:

super.setBackground(Color.CYAN);

You must extend JFrame in the class before doing this!

Hunter Zolomon's user avatar

answered Mar 30, 2013 at 4:11

Red_Hat's user avatar

Red_HatRed_Hat

751 silver badge7 bronze badges

2

I am trying to make a planner and want to change the background of my JFrame.
I have already tried frame.getContentPane().setBackground(Color.); but that doesn’t seem to work.

Here is the code for the frame portion

`public Planner(){
    frame = new JFrame();
    main = new JPanel();
    menu = new Menu(this);
    frame.setPreferredSize(preferredSize);
    frame.add(main);
    frame.setJMenuBar(menu);
    frame.pack();
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Myva");

    JLabel loading = new JLabel();
    JOptionPane pane = new JOptionPane();
    pane.showMessageDialog( null, "Hi. ");
    name = pane.showInputDialog("What is your name:");

}

Thanks in advance

asked Aug 23, 2015 at 2:16

fariswheel's user avatar

0

If I understand your question, then you could call JFrame.setBackground(Color) like

frame.setBackground(Color.BLUE);

If you want to change the color in a more visible manner, you can make it on a JPanel. Like,

public static void main(String[] args) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    panel.setBackground(Color.BLUE);
    frame.add(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(640, 480);
    frame.setVisible(true);
}

which will give you a very BLUE window.

answered Aug 23, 2015 at 2:19

Elliott Frisch's user avatar

Elliott FrischElliott Frisch

195k20 gold badges157 silver badges246 bronze badges

2

To change the color of your JFrame, use the following code:

frame.setBackground(Color.BLUE);

(Color doesn’t have to be blue, I just used it as an example)

answered Aug 23, 2015 at 2:19

Wyatt Lowery's user avatar

Wyatt LoweryWyatt Lowery

5131 gold badge7 silver badges21 bronze badges

I am trying to make a planner and want to change the background of my JFrame.
I have already tried frame.getContentPane().setBackground(Color.); but that doesn’t seem to work.

Here is the code for the frame portion

`public Planner(){
    frame = new JFrame();
    main = new JPanel();
    menu = new Menu(this);
    frame.setPreferredSize(preferredSize);
    frame.add(main);
    frame.setJMenuBar(menu);
    frame.pack();
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Myva");

    JLabel loading = new JLabel();
    JOptionPane pane = new JOptionPane();
    pane.showMessageDialog( null, "Hi. ");
    name = pane.showInputDialog("What is your name:");

}

Thanks in advance

asked Aug 23, 2015 at 2:16

fariswheel's user avatar

0

If I understand your question, then you could call JFrame.setBackground(Color) like

frame.setBackground(Color.BLUE);

If you want to change the color in a more visible manner, you can make it on a JPanel. Like,

public static void main(String[] args) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    panel.setBackground(Color.BLUE);
    frame.add(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(640, 480);
    frame.setVisible(true);
}

which will give you a very BLUE window.

answered Aug 23, 2015 at 2:19

Elliott Frisch's user avatar

Elliott FrischElliott Frisch

195k20 gold badges157 silver badges246 bronze badges

2

To change the color of your JFrame, use the following code:

frame.setBackground(Color.BLUE);

(Color doesn’t have to be blue, I just used it as an example)

answered Aug 23, 2015 at 2:19

Wyatt Lowery's user avatar

Wyatt LoweryWyatt Lowery

5131 gold badge7 silver badges21 bronze badges

14 ответов

Извлеките область содержимого для фрейма и используйте метод setBackground(), унаследованный от Component, чтобы изменить цвет.

Пример:

myJFrame.getContentPane().setBackground( desiredColor );

Brandon E Taylor
04 июль 2009, в 05:29

Поделиться

Чтобы установить цвет фона для JFrame:

getContentPane().setBackground(Color.YELLOW);  //Whatever color

iwanttoprogram
04 июль 2009, в 06:22

Поделиться

с помощью:

setBackground(Color.red);

работает неправильно.

использование

Container c = JFrame.getContentPane();

c.setBackground(Color.red);

или

myJFrame.getContentPane().setBackground( Color.red );

darx
12 сен. 2015, в 09:23

Поделиться

Здравствуйте, У меня была такая же проблема, и после многих попыток я обнаружил, что проблема заключается в том, что вам нужен Graphics Object, чтобы рисовать, рисовать (setBackgroundColor).

Мой код обычно выглядит примерно так:

import javax.swing.*;
import java.awt.*;


public class DrawGraphics extends JFrame{

    public DrawGraphics(String title) throws HeadlessException {
      super(title);
      InitialElements();
    }

    private void InitialElements(){
      setSize(300, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);
      // This one does not work
      // getContentPane().setBackground(new Color(70, 80, 70));

    }

    public void paint(Graphics draw){
      //Here you can perform any drawing like an oval...
      draw.fillOval(40, 40, 60, 50);

      getContentPane().setBackground(new Color(70,80,70));
    }
}

Недопустимая часть почти всех других ответов — это куда поместить код.
Теперь вы знаете, что он идет в краске (Graphics G)

T04435
15 авг. 2015, в 03:46

Поделиться

Здесь другой метод:

private void RenkMouseClicked(java.awt.event.MouseEvent evt) {
    renk = JColorChooser.showDialog(null, "Select the background color",
            renk);
    Container a = this.getContentPane();
    a.setBackground(renk);
}

Я использую netbeans ide. Для меня JFrame.getContentPane() не выполнялся. Я использовал JFrame.getContentPane() эквивалент класса this.getContentPane.

Abdullah
25 нояб. 2009, в 02:26

Поделиться

Вы можете использовать такой контейнер:

Container c = JFrame.getContentPane();
c.setBackground(Color.red); 

Конечно, вы должны импортировать java.awt.Color для цветовой константы красного цвета.

John T
04 июль 2009, в 05:02

Поделиться

public nameOfTheClass()  {

final Container c = this.getContentPane();

  public void actionPerformed(ActionEvent e) {
    c.setBackground(Color.white); 
  }
}

Learning
11 дек. 2017, в 19:20

Поделиться

Это самый простой и правильный метод. Все, что вам нужно сделать, это добавить этот код после initComponents();

getContentPane().setBackground(new java.awt.Color(204, 166, 166));

Это пример цвета RGB, вы можете заменить его желаемым цветом. Если вы не знаете коды цветов RGB, пожалуйста, найдите в Интернете… есть много сайтов, которые предоставляют пользовательские цвета, подобные этому.

Cristian Babarusi
21 июль 2017, в 23:14

Поделиться

Попробуйте следующее:

this.getContentPane().setBackground(Color.white); 

Mr. J
11 янв. 2017, в 11:54

Поделиться

вы можете переопределить метод рисования JFrame, а затем заполнить его любимым цветом следующим образом:

@Override
public void paint(Graphics g) {
    g.setColor(Color.red);
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
}

Mahdi Hasanpour
08 март 2015, в 06:49

Поделиться

import java.awt.*;
import javax.swing.*;

public class MySimpleLayout extends JFrame {

        private Container c;
        public MySimpleLayout(String str) {
            super(str);
            c=getContentPane();
            c.setLayout(null);
            c.setBackground(Color.WHITE);
        }
}

Pratik K
29 нояб. 2012, в 13:45

Поделиться

Создайте JLabel, измените его размер так, чтобы он закрывал ваш JFrame. Щелкните правой кнопкой мыши значок JLabel, найдите значок и нажмите кнопку (…). Выберите изображение, нажав кнопку «Импортировать в проект», затем нажмите «Готово». На панели «Навигатор» (внизу слева по умолчанию, если он отключен, перейдите на вкладку Windows среды NetBeans и включите ее.)

используя Jlable, вы также можете установить цвет фона, а также изображение.

dhaval joshi
07 окт. 2016, в 05:49

Поделиться

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

Saaram
13 авг. 2013, в 23:27

Поделиться

Вероятно, метод SIMPLEST:

super.setBackground(Color.CYAN);

Вы должны расширить JFrame в классе, прежде чем делать это!

Red_Hat
30 март 2013, в 04:57

Поделиться

Ещё вопросы

  • 1Перемещение файлов на SDcard на Android
  • 0Карты Google не будут отображаться до обновления страницы
  • 1Проблема с vue.js для получения данных из REST API
  • 1Генерация триплетов из кадра данных Pandas
  • 1getRingerMode () всегда возвращает значение 0
  • 0функция привязки динамически на jQuery
  • 0Не удается найти правильный синтаксис массива JSON для Highcharts
  • 0Использование списка строковых элементов в качестве источника для компонента Select2
  • 1Android — проблема с гравитацией / шириной макета
  • 1Совместное использование переменной по сеансу
  • 1Попытка разобрать XML с помощью SAX, но ни один из моих тестов JUnit не работает?
  • 0Как я могу сделать раскрывающееся меню при нажатии
  • 1Appwidget: есть ли способы проверить, отображается ли Appwidget в настоящее время на главном экране?
  • 1Использование PhoneGap для мобильного приложения для редактирования видео
  • 1Добавить разбор функции в простой разбор с нечисловыми аргументами
  • 0MySQL — добавить столбец во временные таблицы из другой таблицы
  • 1получить исключение при вставке событий в календарь Android
  • 0JQuery отложено не работает на Chrome и Safari?
  • 0Как мне создать интервал между этими элементами списка? [Дубликат]
  • 1Самостоятельная ошибка при запуске локальной команды с fabric2
  • 1Регулярное выражение для сопоставления 3 или 4 выражений части с разделителями пробела и пробела
  • 0PHP: Как заполнить массив датами (Ymd) в качестве ключей
  • 0CSS div позиционируется не так, как ожидалось
  • 1как вызывать Common Lisp коды из метода JSCL
  • 0Это всегда дает неопределенную ошибку ссылки
  • 0Передать аргумент в директиву angularjs?
  • 1Применить функцию, возвращающую одномерный массив ко всем элементам массива numpy
  • 1Обновление вашего статуса в Facebook?
  • 1DatagramPacket getData vs getLength
  • 1Как справиться с недоступностью холста в JavaScript?
  • 0Загрузите Java-апплет с правилами Jess в HTML
  • 0Получить значение из динамически сгенерированного массива
  • 1Имена папок Unicode для Android в Eclipse, приводящие к неправильной сборке
  • 0Получение URL с динамически генерируемой страницы
  • 0Angular JS с REST сервером: используйте и устанавливайте временные данные (cookie или другие)
  • 1пользовательский вид изображения для Android
  • 0ошибка constexpr статического шаблона
  • 1Установщик Xmlbeans не работает в тесте Gradle
  • 1Проблема с не чтения конкретной информации с помощью сканера
  • 1JTextArea и DocumentFilter
  • 1Javascript действует по-разному в inappbrowser и Chrome — неопределенные глобальные переменные
  • 0Посчитайте биты, установленные в 1, для двоичного числа в C ++
  • 0загрузка веб-страницы до загрузки веб-страницы
  • 0Firebase / Angularfire Localstorage
  • 1Получать данные udp с системного сервера udp на android?
  • 1Ошибка возврата нулевого значения DataAdapter.fill
  • 1Поддержка SDL на базе Android и Windows Phone
  • 1Словарь выражения Linq [дубликаты]
  • 1javascript регулярное выражение или строковый метод для соответствия только поддомену и домену (минус верхние уровни)
  • 0Передача переменных POST с приложением Windows Phone

JFrame это BorderLayout по умолчанию

По умолчанию JPanel имеет значение FlowLayout.

1. JFrame устанавливает цвет фона, обратите внимание на предложение, которое реализует комментарий.

package com.tools;

import java.awt.Color;

import javax.swing.JFrame;
public class Test extends JFrame
{
	public static void main(String[] args)
	{
		new Test();
	}
	
	
	public Test()
	{
		this.setSize(400,300);
		this.setLocation(400,300);
		this.setBackground(Color.blue);
		this.getContentPane().setBackground(Color.red);
		this.getContentPane (). setVisible (false); // Если значение изменено на true, оно становится красным.
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}

2. Установите фоновое изображение для JFrame.

Способ 1: добавив JPanel в JFrame, фоновое изображение помещается в JPanel. код шоу, как показано ниже:

import java.awt.*;

import javax.swing.*;


public class Test extends JFrame
{
	 // Создать контейнер
	Container ct;
	 // Создать фоновую панель.
	BackgroundPanel bgp;
	
	 // Создать кнопку, чтобы доказать, что мы создали фоновую картинку, а не картинку.
	JButton jb;
	public static void main(String[] args)
	{
		new Test();
	}
	public Test()
	{
		 // Не используйте макет.
		ct=this.getContentPane();
		this.setLayout(null);
		
		 // Вы можете найти фотографию 400 * 300 здесь, чтобы увидеть результаты теста.
		bgp=new BackgroundPanel((new ImageIcon("images\background.jpg")).getImage());
		bgp.setBounds(0,0,400,300);
		ct.add(bgp);
		
		 // Создать кнопку
		 jb = новый JButton («Кнопка тестирования»);
		jb.setBounds(60,30,160,30);
		ct.add(jb);
		
		this.setSize(400,300);
		this.setLocation(400,300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}
class BackgroundPanel extends JPanel
{
	Image im;
	public BackgroundPanel(Image im)
	{
		this.im=im;
		this.setOpaque(true);
	}
	//Draw the back ground.
	public void paintComponent(Graphics g)
	{
		super.paintComponents(g);
		g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this);
		
	}
}

Эффект заключается в следующем:

Метод 2: Мы используем JLayeredPane, который добавляет глубину в контейнер JFC / Swing, позволяя компонентам перекрывать друг друга при необходимости.Integer Объект указывает глубину каждого компонента в контейнере, где компонент с более высоким номером находится над другими компонентами. Обычно используются следующие слои:

Конкретный код реализации выглядит следующим образом:

/**
   * Добавить фоновый узор в JFrame.
 */
package com.swingpractise;


import javax.swing.*;

public class JFrameBackground4 extends JFrame
{
	 // Создать JLayeredPane для наложения.
	JLayeredPane layeredPane;
	 // Создание панели и метки для хранения изображений в качестве фона.
	JPanel jp;
	JLabel jl;
	ImageIcon image;
	
	 // Создать кнопку для тестирования.
	JButton jb;
	public static void main(String[] args)
	{
		new JFrameBackground4();
	}
	
	public JFrameBackground4()
	{
		layeredPane=new JLayeredPane();
		 image = new ImageIcon ("images \ background.jpg"); // Просто найдите изображение, чтобы увидеть эффект.		
		 // Вещи, которые создают фон
		jp=new JPanel();
		jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());

		jl=new JLabel(image);
//		jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
		jp.add(jl);
		
		 // Создать тестовую кнопку
		 jb = новый JButton («Кнопка тестирования»);
		jb.setBounds(100,100,100,100);
		
		 // Поместить jp внизу.
		layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
		 // Поместить jb на один уровень выше
		layeredPane.add(jb,JLayeredPane.MODAL_LAYER);
		
		this.setLayeredPane(layeredPane);
		this.setSize(image.getIconWidth(),image.getIconHeight());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocation(image.getIconWidth(),image.getIconHeight());
		this.setVisible(true);	
	}
}

Результаты теста следующие:

Мы приглашаем всех обсудить лучшие и лучшие методы вместе.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить цвет input type radio
  • Как изменить цвет input range css
  • Как изменить цвет imgui lua
  • Как изменить цвет imessage
  • Как изменить цвет html текст

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии