Pessoal,
Sou novato na área e estou com um pouco de dificuldades, vejam meu código, eu queria que quando movesse o sliderRed ele desse um repaint(); no Canvas, mais não funciona, alguém poderia me ajudar?
Outra coisa, o ChangeListener e o ActionListener não funcionam muito bem, tipo se eu colocar 2 comandos dentro do stateChanged aparecem diversos erros.
Obs. Desculpem pelo código, é que não conheço quase nada de Java, sou curioso, então o código ta um lixo.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.*;
public class Retangulos extends JFrame// implements ActionListener
{
int RA, GA, BA=255, RB=255, GB, BB, RC, GC, BC;
int ax1, ay1, ax2, ay2, aux;
int bx1, by1, bx2, by2, cont=0;
int cx1, cy1, cx2, cy2;
private JButton rectUm, rectDois;
private JRadioButton radioUm, radioDois;
private ButtonGroup radioGroup;
private JSlider sliderRed, sliderGreen, sliderBlue, sliderCyan, sliderMagenta, sliderYellow;
private JLabel labelRed, labelGreen, labelBlue;
class MeuCanvas extends Canvas
{
public boolean mouseDown(Event e, int x, int y)
{
if(radioUm.isSelected()==true)
{
ax1=x; ay1=y;
}
else if(radioDois.isSelected()==true)
{
bx1=x; by1=y;
}
return true;
}
public boolean mouseUp(Event e, int x, int y)
{
if(radioUm.isSelected()==true)
{
ax2=x; ay2=y;
if(ax1>ax2)
{
aux=ax1;
ax1=ax2;
ax2=aux;
}
if(ay1>ay2)
{
aux=ay1;
ay1=ay2;
ay2=aux;
}
cont++;
}
else if(radioDois.isSelected()==true)
{
bx2=x; by2=y;
if(bx1>bx2)
{
aux=bx1;
bx1=bx2;
bx2=aux;
}
if(by1>by2)
{
aux=by1;
by1=by2;
by2=aux;
}
cont++;
}
if(ax1>bx1)
cx1=ax1;
else
cx1=bx1;
if(ay1>by1)
cy1=ay1;
else
cy1=by1;
RC = RA + RB;
GC = GA + GB;
BC = BA + BB;
if(RC>255) RC = 255;
if(GC>255) GC = 255;
if(BC>255) BC = 255;
cx2=(Math.max(ax2,bx2)-Math.min(ax1,bx1))-(Math.abs(ax1-bx1)+Math.abs(ax2-bx2));
cy2=(Math.max(ay2,by2)-Math.min(ay1,by1))-(Math.abs(ay1-by1)+Math.abs(ay2-by2));
repaint();
return true;
}
public void paint(Graphics g) // contexto grafico onde o desenho esta sendo desenvolvido
{
g.setColor(new Color (RA,GA,BA));
g.fillRect(ax1,ay1,ax2-ax1,ay2-ay1);
g.setColor(new Color (RB,GB,BB));
g.fillRect(bx1,by1,bx2-bx1,by2-by1);
g.setColor(new Color (RC,GC,BC));
g.fillRect(cx1,cy1,cx2,cy2);
}
}
public Retangulos()
{
Container container = getContentPane();
getContentPane().setBackground(new Color(255,255,255));
getContentPane().setLayout(new BorderLayout());
JPanel barra = new JPanel();
final JSlider sliderRed = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sliderRed.setBorder(BorderFactory.createTitledBorder("RED"));
sliderRed.setMajorTickSpacing(40);
sliderRed.setMinorTickSpacing(5);
sliderRed.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent evt)
{
if(radioUm.isSelected()==true)
RA = sliderRed.getValue();
if(radioDois.isSelected()==true)
RB = sliderRed.getValue();
}
});
final JSlider sliderGreen = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sliderGreen.setBorder(BorderFactory.createTitledBorder("GREEN"));
sliderGreen.setMajorTickSpacing(20);
sliderGreen.setMinorTickSpacing(5);
sliderGreen.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent evt)
{
if(radioUm.isSelected()==true)
GA = sliderGreen.getValue();
if(radioDois.isSelected()==true)
GB = sliderGreen.getValue();
}
});
final JSlider sliderBlue = new JSlider(JSlider.HORIZONTAL, 0, 255, 255);
sliderBlue.setBorder(BorderFactory.createTitledBorder("BLUE"));
sliderBlue.setMajorTickSpacing(40);
sliderBlue.setMinorTickSpacing(5);
sliderBlue.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent evt)
{
if(radioUm.isSelected()==true)
BA = sliderBlue.getValue();
if(radioDois.isSelected()==true)
BB = sliderBlue.getValue();
}
});
JSlider sliderCyan = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sliderCyan.setBorder(BorderFactory.createTitledBorder("CYAN"));
sliderCyan.setMajorTickSpacing(20);
sliderCyan.setMinorTickSpacing(5);
JSlider sliderMagenta = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sliderMagenta.setBorder(BorderFactory.createTitledBorder("MAGENTA"));
sliderMagenta.setMajorTickSpacing(40);
sliderMagenta.setMinorTickSpacing(5);
JSlider sliderYellow = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sliderYellow.setBorder(BorderFactory.createTitledBorder("YELLOW"));
sliderYellow.setMajorTickSpacing(40);
sliderYellow.setMinorTickSpacing(5);
radioUm = new JRadioButton( "UM", true );
radioDois = new JRadioButton( "DOIS", true );
/*rectUm = new JButton("bla");
rectUm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt)
{
}
});*/
barra.setLayout(new GridLayout(2,4));
barra.add(sliderRed);
barra.add(sliderGreen);
barra.add(sliderBlue);
barra.add(radioUm);
barra.add(sliderCyan);
barra.add(sliderMagenta);
barra.add(sliderYellow);
barra.add(radioDois);
radioGroup = new ButtonGroup();
radioGroup.add( radioUm );
radioGroup.add( radioDois );
MeuCanvas c = new MeuCanvas();
getContentPane().add(c);
getContentPane().add(barra, BorderLayout.NORTH);
}
public void stateChanged(ChangeEvent evt) {}
public void actionPerformed(ChangeEvent evt) {}
public static void main (final String a[])
{
JFrame Janela = new Retangulos();
Janela.show();
Janela.setTitle("Trabalho de CG I");
Janela.setSize(640,480);
Janela.setLocation(220,142);
Janela.setVisible(true);
}
}
