Pessoal, eu tenho um ArrayList onde estão gravados os números de uma reta. E eu quero exibi-los na tela com drawString, mas não consigo ordenar uma posição para cada valor do array, todos são exibidos no mesmo lugar, como eu posso colocar uma posição para cada valor do ArrayList?
Eu tentei usar este código, mas não está dando certo:
int i = 0;
int ib = 0;
while(i < TotalY){
for(int valores : Valores_Grafico.getDadosY()){
int cont = Valores_Grafico.getDadosY().size();
g.drawString(String.valueOf(valores), cont*1, ((cont*100)/2));
g.drawLine(((cont*100)/2)+25, cont*100, ((cont*100)/2)+25, 50);
g.drawString("Y", ((cont*100)/2)+22, ((cont*100)/2)-((cont*100)/2)+25);
}
i++;
}
Para mostra os valores do ArrayList com o drawString e muito simples vc passa a string e as coordenadas x e y da tela como a própria documentação diz.
drawString
public abstract void drawString(String str,
int x,
int y)
Draws the text given by the specified string, using this graphics context’s current font and color. The baseline of the leftmost character is at position (x, y) in this graphics context’s coordinate system.
Parameters:
str - the string to be drawn.
x - the x coordinate.
y - the y coordinate.
Deve esta acontecendo alguma coisa no calculo que vc ta fazendo.
O valor da variável “count” esta vindo correto?(pode esta retornando zero?).
Será que a dimensão da sua tela não é muito pequena para os valores retornados por esses calculo que vc esta fazendo?
Além disso, esse calculo q vc faz pode retorna valores reais (valores fracionados, double) e o método deve esta fazendo a conversão e ficando so com a parte inteira (ex: 3,14 -> 3 nesse caso se todos os calculo estiverem retornando valores na faixa de 3,… alguma coisa justificaria as strings estarem sempre no mesmo lugar).
Tente depurar o código para ver oq realmente ta acontecendo?
segue um exemplo simples q eu fiz aqui ve se vc entende melhor
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class WriteStrign extends JPanel{
private ArrayList<String> list;
public WriteStrign() {
list = new ArrayList<String>();
list.add("String 1");
list.add("String 2");
list.add("String 3");
}
@Override
public void paint(Graphics g) {
int x = 25; //posição no eixo X
int y = 25; //posição no eixo Y
for (String string : list) { //percorre o ArryList
g.drawString(string, x, y);
y+=25; //atualiza a posição no eixo Y para que as strings sejam desenhadas uma abaixo da outra
//a posição da string na tela e feita através das variaveis x e y.
}
}
public static void main(String[] args) {
WriteStrign panel = new WriteStrign();
JFrame tela = new JFrame();
tela.setTitle("Ajuda");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setLayout(new BorderLayout());
tela.setSize(400, 400);
tela.setLocationRelativeTo(null);
tela.setVisible(true);
tela.add(panel);
}
}