gpt4 book ai didi

java - 为什么绘制类不能与 setDefault LookAndFeel Decorated(true) 一起使用

转载 作者:行者123 更新时间:2023-12-02 11:11:49 25 4
gpt4 key购买 nike

package Jai;

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


public class tuna extends JFrame{

tuna(){
super("Title");
setLayout(new FlowLayout());

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

public void paint(Graphics g){
super.paint(g);

g.fillOval(50, 100, 100, 155);
}

public static void main(String[] arg){
JFrame.setDefaultLookAndFeelDecorated(true);
tuna obj = new tuna();
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.setSize(500,500);
obj.setVisible(true);
}
}

我有一个JFrame,我使用paint方法在框架上绘制一个椭圆形。每当我尝试最大化或最小化窗口时,通过 Paint() 方法绘制的椭圆就会消失。我希望即使在最大化或最小化框架时,绘制的图形也能保留。

最佳答案

您的问题是为错误的对象覆盖错误的方法。您必须重写主面板的 paintComponent 方法。这是正确的代码:

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class tuna extends JFrame {
tuna() {
super("Title");
// you need to override the method paintComponent for the main panel
setContentPane(new JPanel(new FlowLayout()) {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(50, 100, 100, 155);
}
});
getContentPane().setBackground(Color.white);
}

public static void main(String[] arg) {
JFrame.setDefaultLookAndFeelDecorated(true);
tuna obj = new tuna();
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.setSize(500, 500);
obj.setVisible(true);
}
}

关于java - 为什么绘制类不能与 setDefault LookAndFeel Decorated(true) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50565459/

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