Кто-нибудь знает, почему бары на моем барграфе появляются вверх ногами? И какой код я мог бы добавить, чтобы оставить немного места между каждым штрихом? Когда я говорю с ног на голову я имею в виду, что бары даже в верхней и спускаясь они различаются по длинеJPanel HELP, чтобы нарисовать барграф
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);
}
}
}
Не переопределяйте 'paint', это не лучший метод для использования, подумайте об использовании' paintComponent' и убедитесь, что вы вызываете 'super.paintComponent', прежде чем выполнять какую-либо обычную роспись. См. [Выполнение пользовательской живописи] (http://docs.oracle.com/javase/tutorial/uiswing/painting/) для получения более подробной информации. – MadProgrammer
См. [Хорошее объяснение] (http://stackoverflow.com/a/22361960/2587435) и [пример] (http://stackoverflow.com/a/22075683/2587435) –