gpt4 book ai didi

java - PaintComponent() 方法未绘制到 JPanel

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

JFrame 和 JPanel 已显示,但 PaintComponent 方法未在 JPanel 上绘制。我只看到我添加的 JLabel、JTextField 和 JButton,但看不到应该在 JPanel 上绘制的内容。

更新;问题已得到解答: 圆圈实际上被绘制到 JPanel,但我的坐标错误,因此它们被绘制在框架之外。

JFrame 类:

package h02;

import javax.swing.*;

public class Circles extends JFrame {

public Circles() {

// JFrame and its properties

JFrame frame = new JFrame();

frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.setTitle("Circles");
frame.add(new CirclesPanel());
frame.setVisible(true);

}

public static void main(String[] args) {

new Circles();
}

}

JPanel 类:

    package h02;

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

public class CirclesPanel extends JPanel implements ActionListener {

// Fields

private JTextField enterDiameter;
private JButton drawButton;
private int diameter;
private final int Y = 470;

// making the panel

public CirclesPanel() {

enterDiameter = new JTextField("100", 5);
enterDiameter.addActionListener(this);
drawButton = new JButton("Teken");
drawButton.addActionListener(this);
add(new JLabel("Diameter"));
add(enterDiameter);
add(drawButton);

}

// find the diameter

public void findDiameter() {

int diameterString = Integer.parseInt(enterDiameter.getText());
diameter = diameterString;
}

// draw circles


public void paintComponent(Graphics g) {
super.paintComponent(g);
int centre = getWidth() / 2;
g.drawLine(30, Y, Y , Y);
g.setColor(Color.ORANGE);
g.fillOval(centre, Y, diameter, diameter);
g.setColor(Color.BLACK);
g.drawOval(centre, Y, diameter, diameter);
g.drawOval(centre, Y, diameter / 2, diameter);
}

// on action performed...

public void actionPerformed(ActionEvent e) {
findDiameter();
repaint();
}

}

最佳答案

问题出在 CirclesPanel 中的“Y”。元素被绘制但在框架之外,尝试减少 Y,你肯定会看到你的元素。

或者增加框架大小。

关于java - PaintComponent() 方法未绘制到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218790/

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