gpt4 book ai didi

java - JPanel HELP 绘制条形图

转载 作者:行者123 更新时间:2023-12-01 22:43:26 24 4
gpt4 key购买 nike

有谁知道为什么我的条形图上的条形显示颠倒?我可以添加什么代码来在绘制的每个条形之间留出一点空间?当我说颠倒时,我的意思是条形在顶部甚至向下,它们的长度各不相同

import java.awt.*;

import javax.swing.*;
public class Panel extends JPanel
{
int []nums;
String[]cat;
String t;
int max=0;
int width=0;
int height=0;
public Panel(int []x,String[]y,String a)
{
for(int i=0;i<x.length;i++)
{
if(x[i]>max)
max=x[i];
}
nums=x;
cat=y;
t=a;
width=nums.length*100+nums.length*10;
height=max*10+500;
setSize(width,height);
}
public void paint(Graphics g)
{
Font title=new Font("TimesNewRoman",Font.BOLD,20);
FontMetrics titl=g.getFontMetrics(title);
g.setFont(title);
g.drawString(t,width/2,20);
Font label=new Font("TimesNewRoman",Font.BOLD,15);
FontMetrics labl=g.getFontMetrics(label);
g.setFont(label);
for(int j=0;j<nums.length;j++)
{
g.setColor(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
g.drawString(cat[j],(nums.length*100)-((nums.length-j)*100)+22,height-20);
g.fillRect(j*100,height-400,100,nums[j]*15);


}





}
}

最佳答案

主要问题是......

g.fillRect(j * 100, height - 400, 100, nums[j] * 15);

基本上,这表示从 j * 100 绘制一个矩形xheight - 400100宽和nums[j] * 15高...

矩形是从 x/y 位置向右/向下绘制的

您需要抵消 y位置从 height根据栏的高度...

g.fillRect(j * 100, height - (nums[j] * 15), 100, nums[j] * 15);

不要覆盖paint ,这不是最好的使用方法,请考虑使用 paintComponent并确保您调用 super.paintComponent在进行任何定制绘画之前。请参阅Performing Custom Painting了解更多详情。

不要使用setSize在组件上,您传递给它的任何值都将由父容器的布局管理器重置。覆盖getPreferredSize JPanel的相反。

永远不要假设 paint 中组件的实际大小。方法不同,你想要的和你得到的并不总是一样的。

使用getWidthgetHeight确定可视区域的实际大小。

关于java - JPanel HELP 绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735195/

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