olá pessoal. como faço pra usar essa variavel g2 do metodo paint no comando do meu botao?
public class Reta extends JFrame{
JButton b1 = new JButton(" Ok ");
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(15));
g2.setColor(Color.blue);
//loop para criação dos pontos
for (int y = 200; y < 650; y=y+100) {
for (int x = 150; x < 650; x=x+100) {
g2.drawLine(x, y, x, y);
}
}
}
public Reta() {
super("ponto e reta");
setSize(650, 700);
setLayout(new GridBagLayout());
((JComponent)getContentPane()).setBorder(new EmptyBorder(1, 1, 1, 1));
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridy = 0;
add(b1, gbc);
//comando do botao
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int xt1,yt1,xt2,yt2;
/*usar variavel g2 aqui */
}
});
}
public static void main(String[] args) {
Reta janela = new Reta();
janela.setVisible(true);
}
}
Bem não sei muito bem o que vc está fazer, mas variáveis de métodos só são visíveis dentro desse método.
O que agente pode tentar fazer é que uma variavel externa receba o valor que a variavel desse metodo tem, para que você então possa usar a variavel exter em outro lugar.
Fica assim
[code]JButton b1 = new JButton(" Ok ");
Graphics2D g2Externo;
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(15));
g2.setColor(Color.blue);
//loop para criação dos pontos
for (int y = 200; y < 650; y=y+100) {
for (int x = 150; x < 650; x=x+100) {
g2.drawLine(x, y, x, y);
}
}
this.g2Externo = g2;
}
[/code]
Meu amigo não tenho a absoluta certeza que vá funcionar,o seu caso, mas não custa nada tentar.
Ao menos quando preciso de lago semelhante uso assim e funciona.
Sorte ai.
olá Ziru, a dica funcionou mais ou menos.
o que eu estou querendo fazer é criar uma grande de pontos(5 linhas x 5 colunas com distancia entre pontos de 100) e ligar estes pontos com retas (g3.drawLine(150,200,150,300) atraves do botao.
aparentemente está tudo certo, compila normal sem erro, mas quando clico no botao nao aparece linha nenhuma. segue abaixo o codigo com a correção. Se vc ou alguem tiver alguma ideia eu agradeço.
[code]
public class Reta extends JFrame{
JButton b1 = new JButton(" Ok ");
Graphics2D g3;
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Graphics2D g4 = (Graphics2D) g;
g2.setStroke(new BasicStroke(15));
g2.setColor(Color.blue);
//loop para criação dos pontos
for (int y = 200; y < 650; y=y+100) {
for (int x = 150; x < 650; x=x+100) {
g2.drawLine(x, y, x, y);
}
}
g4.setStroke(new BasicStroke(5));
g4.setColor(Color.red);
this.g3 = g4;
}
public Reta() {
super("ponto e reta");
setSize(650, 700);
setLayout(new GridBagLayout());
((JComponent)getContentPane()).setBorder(new EmptyBorder(1, 1, 1, 1));
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridy = 0;
add(b1, gbc);
//comando do botao
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int xt1,yt1,xt2,yt2;
g3.drawLine(150,200,150,300);
g3.drawLine(150,200,250,200);
}
});
}
public static void main(String[] args) {
Reta janela = new Reta();
janela.setVisible(true);
}
} [/code]