gpt4 book ai didi

Java Swing 自定义背景

转载 作者:行者123 更新时间:2023-12-04 05:55:18 26 4
gpt4 key购买 nike

我有一个 JFrame,上面有一些面板,每个面板都包含不同的项目。如何设置框架背景?我的意思是,如果我只设置背景,不添加项目,背景就是我想要的,但是如果我添加项目,背景就清晰了。同样,如果我先设置一个面板的背景,然后在其中插入一些对象,则该项目不会出现在框架上,框架会用我选择的背景着色。你能告诉我为已经有项目的面板/框架设置背景颜色的最简单方法吗?谢谢。我想设置一个自定义的背景颜色。如果唯一的方法是设置背景图像,我会这样做......

编辑:我想要一个单一的背景颜色,而不是更多。

最佳答案

我已经为你制作了一个示例程序,如果你想要别的东西,请告诉我。我已经做到了这两种方法,您可以通过按下 JButton 在 JPanel 上没有任何项目的情况下为背景设置新颜色,或者您可以先将项目添加到 JPanel,然后更改背景颜色,这工作正常。似乎您的问题对于预期的内容以及实际发生的情况有点不清楚。请告诉我,如果你想要别的东西,除了这个。

此外,当您将 Items 添加到已经显示的 JPanel 时,之后总是 revalidate() 和 repaint() 您的 JPanel,以使更改生效。

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

public class AddItemOrColor extends JFrame
{
private JPanel contentPane;
private JButton modifyItemButton;
private JButton modifyColorButton;
private ActionListener action;
private int count = 0;
private Color[] color = {
Color.RED, Color.BLUE, Color.GRAY,
Color.WHITE, Color.CYAN, Color.PINK,
Color.DARK_GRAY, Color.ORANGE, Color.MAGENTA
};

public AddItemOrColor()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationByPlatform(true);

contentPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 3, 3));
//contentPane.setMargin(new Insets(10, 10, 10, 10));
contentPane.setBackground(Color.BLUE);

modifyItemButton = new JButton("MODIFY CONTENT");
modifyColorButton = new JButton("MODIFY COLOR");

action = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JButton button = (JButton) ae.getSource();

if (count == 9)
count = 0;

if (button == modifyItemButton)
{
contentPane.add(new JLabel("LABEL " + count));
}
else if (button == modifyColorButton)
{
contentPane.setBackground(color[count]);
}

contentPane.revalidate();
contentPane.repaint();
count++;
}
};

modifyItemButton.addActionListener(action);
modifyColorButton.addActionListener(action);

add(modifyColorButton, BorderLayout.PAGE_START);
add(contentPane, BorderLayout.CENTER);
add(modifyItemButton, BorderLayout.PAGE_END);

setSize(400, 400);
setVisible(true);
}

public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new AddItemOrColor();
}
});
}
}

关于Java Swing 自定义背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9573078/

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