Just how do you set the background color for a JFrame?
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 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
using:
setBackground(Color.red);
doesn’t work properly.
use
Container c = JFrame.getContentPane();
c.setBackground(Color.red);
or
myJFrame.getContentPane().setBackground( Color.red );
Reins
1,1091 gold badge17 silver badges35 bronze badges
answered Sep 12, 2015 at 8:07
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
To set the background color for the JFrame try this:
this.getContentPane().setBackground(Color.white);
luk2302
53.3k23 gold badges96 silver badges136 bronze badges
answered Jan 11, 2017 at 10:24
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
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
2,17123 silver badges29 bronze badges
answered Jul 4, 2009 at 4:32
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
9,33036 gold badges89 silver badges104 bronze badges
answered Nov 25, 2009 at 2:11
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
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
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
public nameOfTheClass() {
final Container c = this.getContentPane();
public void actionPerformed(ActionEvent e) {
c.setBackground(Color.white);
}
}
answered Dec 11, 2017 at 18:35
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
41.1k62 gold badges237 silver badges324 bronze badges
answered Nov 29, 2012 at 13:13
1
Probably the SIMPLEST method is this:
super.setBackground(Color.CYAN);
You must extend JFrame in the class before doing this!
answered Mar 30, 2013 at 4:11
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
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 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 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
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 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 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);
}
}
Результаты теста следующие:
Мы приглашаем всех обсудить лучшие и лучшие методы вместе.