Manter grafico em cima do jlabel

2 respostas
V

olá pessoal, seguinte,
estou criando uma grade de 5 linha e 5 coluna com jlabel como mostra abaixo. em seguida uma grade de pontos 5col x5lin em cima dos jlabel
até ai tudo bem, o problema é que quando insiro linhas usando o repaint e minimizo a aplicação quando maximizo os graficos tem ficado abaixo dos jlabel.

leyout dos jlabel na tela

.            C1       C2       C3       C4       C5
.       L1
.                 Q01     Q02     Q03     Q04
.       L2
.                 Q05     Q06     Q07     Q08
.       L3
.                 Q09     Q10     Q11     Q12
.       L4
.                 Q13     Q14     Q15     Q16
.       L5

parte do codigo para inserir os jlabel

setLayout(new GridBagLayout());
        ((JComponent)getContentPane()).setBorder(
           new EmptyBorder(0, 45, 0, 0));
        GridBagConstraints gbc = new GridBagConstraints();
 
        //primeira linha - tag das colunas
        gbc.fill = GridBagConstraints.HORIZONTAL; // zera o fill
        gbc.insets = new Insets(1, 1, 0, 0);
        gbc.ipadx = 30; //comprimento
        gbc.ipady = 32;  //altura
        gbc.gridy = 0;   //linha
        gbc.gridx = 1;   //coluna
        gbc.gridwidth = 1; //qtd de celulas
        add(new JLabel("C1"), gbc);
        gbc.gridy = 0;
        gbc.gridx = 3;
        add(new JLabel("C2"), gbc);

codigo para gerar os pontos e linhas

public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g3 = (Graphics2D) g;
         g2.setStroke(new BasicStroke(12));
        g2.setColor(Color.blue);        
	        for (int y = 100; y < 600; y=y+100) {
	            for (int x = 100; x < 600; x=x+100) {
	            	g2.drawLine(x, y, x, y);
	            }
	        }

        try {
            g3.setStroke(new BasicStroke(5));
            g3.setColor(Color.red);
            g3.drawLine(x1*100,y1*100,x2*100,y2*100);        
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Erro ao inserir linha.","Msg",JOptionPane.ERROR_MESSAGE);
        }

desde já agradeço.

2 Respostas

V

alguem pode me ajudar?

E

Infelizmente, é melhor você desenhar tudo (legendas, pontos, linhas e eixos) manualmente (ou seja, no evento paintComponent) em vez de usar JLabels.

Como você deve ter percebido, o posicionamento dos JLabels depende do layout manager, e não segue as regras que você está esperando.

Outra alternativa, se isso não for um trabalho de escola que exige que você desenhe o gráfico “na raça”, é usar algum pacote gráfico como o JFreeChart.

Criado 20 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 2
Participantes 2