gpt4 book ai didi

java - 为什么 setBackground 方法无法设置 JPanel 的背景?

转载 作者:行者123 更新时间:2023-12-02 05:24:45 28 4
gpt4 key购买 nike

我正在尝试构建一个简单的椭圆形 slider 程序。我将窗口的背景颜色设置为橙色,但它并没有将背景设置为橙色,而是设置为灰色背景。而且 slider 无法传递适当的值。因为当我滑动以增加椭圆形的大小时,它会变成一个奇怪的形状,分散了原来的椭圆形形状的注意力。

这是我的完整代码:

package drawoval;

import java.awt.Color;
import javax.swing.JFrame;

public class Drawoval {

public static void main(String[] args) {

TheWindows tw=new TheWindows();
tw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tw.setSize(230,280);
tw.setVisible(true);

}


}



package drawoval;

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

import javax.swing.event.*;

public class TheWindows extends JFrame{
private JSlider slider;
private Oval myPanel;


public TheWindows(){
super("The title");
myPanel=new Oval();
myPanel.setBackground(Color.ORANGE);
slider=new JSlider(SwingConstants.HORIZONTAL,0, 200,10);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
slider.addChangeListener(
new ChangeListener(){
public void stateChanged(ChangeEvent e){
myPanel.setNewD(slider.getValue());

}

}

);
add(slider,BorderLayout.SOUTH);
add(myPanel,BorderLayout.CENTER);

}



}



package drawoval;

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;

public class Oval extends JPanel {

private int d = 10;

public void paintComponent(Graphics g) {
super.paintComponents(g);
g.fillOval(10, 10, d, d);

}

public void setNewD(int newD) {
d = (newD >= 0 ? newD : 10);
repaint();

}

public Dimension getPreferredDim() {

return new Dimension(200, 280);

}

public Dimension getMinSize() {
return getPreferredDim();

}

}

最佳答案

因为您调用的是 super.paintComponents(g); 而不是 super.paintComponent(g)...而不是 s方法名称末尾...

此外,我不确定您认为 getPreferredDimgetMinSize 会做什么,但它们不会被 Swing 内的任何 API 调用,我认为您的意思是getPreferredSizegetMinimumSize 布局管理器将使用它们来更好地决定如何布局组件

关于java - 为什么 setBackground 方法无法设置 JPanel 的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171201/

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