segue o código…
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package equacao2grau;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import descobriroxis.ClasseBase;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.QuadCurve2D;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
//import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
*
* @author raghy
*/
public class equacao2Grau extends ClasseBase implements ActionListener, ItemListener {
JCheckBox cb1, cb2, cb3;
JButton b2;
JTextField jT1 = new JTextField();
JTextField jT2 = new JTextField();
JTextField jTresultado = new JTextField();
JLabel jTvalor = new JLabel();
JLabel jTvalor1 = new JLabel();
JLabel jTvalor2 = new JLabel();
JLabel jTvalor3 = new JLabel();
JLabel jTvalor4 = new JLabel();
JLabel jTvalor5 = new JLabel();
JLabel jTvalor6 = new JLabel();
JLabel jTvalor7 = new JLabel();
JLabel jTvalor8 = new JLabel();
JLabel jTvalor9 = new JLabel();
JLabel jTvalor10 = new JLabel();
int j1 = 0;
int j2 = 0;
int jresultado = 0;
double delta = 0;
double x, y;
int posicaoX;
int posicaoY;
int coordenadaYdeX = 0;
int coordenadaYdeX2 = 0;
String Valor_jLabel = "";
boolean negativo1, negativo2, negativo3;
double xLinha = 0;
double xDuasLinhas=0;
int xLinha2 = 0;
int xDuasLinhas2 = 0;
double yVertice;
double xVertice;
public equacao2Grau() {
//painel e titulo doframe
setTitle("equacao de 2 grau");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(true);
setLocationRelativeTo(null);
Font F = new Font("Sans Serif", Font.BOLD, 16);
Font F1 = new Font("Sans Serif", Font.ITALIC, 14);
Font F2 = new Font("Sans Serif", Font.ITALIC, 20);
//botao 1 ou calcula...
b2 = new JButton();
b2.setText("Novo Calculo");
b2.setSize(100, 25);
b2.setLocation(50, 360);
b2.setBackground(Color.orange);
b2.setForeground(Color.blue);
b2.setFont(new Font("Sans Serif", Font.BOLD, 14));
b2.setBorder(BorderFactory.createBevelBorder(1, Color.white, Color.black));
b2.setEnabled(true);
b2.addActionListener(this);
//label1
JLabel L1 = new JLabel();
L1.setText("equacao de 2 grau");
L1.setSize(200, 35);
L1.setFont(F);
L1.setLocation(45, 5);
L1.setForeground(Color.blue);
//label2
JLabel L2 = new JLabel();
L2.setText("formula geral: ax(2)+bx+c=0");
L2.setSize(200, 35);
L2.setLocation(45, 25);
L2.setForeground(Color.blue);
//label2
JLabel L3 = new JLabel();
L3.setText("insira os numeros desejados: ");
L3.setSize(200, 35);
//L3.setFont(F);
L3.setLocation(45, 45);
L3.setForeground(Color.blue);
//jT1
jT1.setFont(F2);
jT1.setText("");
jT1.setLocation(40, 85);
jT1.setSize(35, 35);
//+
JLabel mais = new JLabel();
mais.setText("x(2)+");
mais.setSize(200, 35);
mais.setFont(F);
mais.setLocation(78, 85);
mais.setForeground(Color.blue);
//+
JLabel igual = new JLabel();
igual.setText("x +");
igual.setSize(200, 35);
igual.setFont(F);
igual.setLocation(155, 85);
igual.setForeground(Color.blue);
JLabel igualAzero = new JLabel();
igualAzero.setText("= 0");
igualAzero.setSize(200, 35);
igualAzero.setFont(F);
igualAzero.setLocation(225, 85);
igualAzero.setForeground(Color.blue);
//valores negativos
cb1 = new JCheckBox("negativo", false);
cb1.setLocation(36, 120);
cb1.setSize(74, 20);
cb1.setBackground(new Color(255, 255, 100));
cb2 = new JCheckBox("negativo", false);
cb2.setLocation(116, 120);
cb2.setSize(73, 20);
cb2.setBackground(new Color(255, 255, 100));
cb3 = new JCheckBox("negativo", false);
cb3.setLocation(185, 120);
cb3.setSize(74, 20);
cb3.setBackground(new Color(255, 255, 100));
cb1.addItemListener(this);
cb2.addItemListener(this);
cb3.addItemListener(this);
//jT2
jT2.setFont(F2);
jT2.setText("");
jT2.setLocation(120, 85);
jT2.setSize(35, 35);
//jTresultado
jTresultado.setFont(F2);
jTresultado.setText("");
jTresultado.setLocation(190, 85);
jTresultado.setSize(35, 35);
jTvalor.setSize(250, 35);
jTvalor.setLocation(45, 135);
jTvalor.setForeground(Color.blue);
jTvalor1.setSize(250, 35);
jTvalor1.setLocation(45, 150);
jTvalor1.setForeground(Color.blue);
jTvalor2.setSize(330, 35);
jTvalor2.setLocation(45, 165);
jTvalor2.setForeground(Color.blue);
jTvalor3.setSize(250, 35);
jTvalor3.setLocation(45, 180);
jTvalor3.setForeground(Color.blue);
jTvalor4.setSize(250, 35);
jTvalor4.setLocation(45, 195);
jTvalor4.setForeground(Color.blue);
jTvalor5.setSize(250, 35);
jTvalor5.setLocation(45, 210);
jTvalor5.setForeground(Color.blue);
jTvalor6.setSize(350, 35);
jTvalor6.setLocation(45, 225);
jTvalor6.setForeground(Color.blue);
jTvalor7.setSize(350, 35);
jTvalor7.setLocation(45, 240);
jTvalor7.setForeground(Color.blue);
jTvalor8.setSize(250, 35);
jTvalor8.setLocation(45, 255);
jTvalor8.setForeground(Color.blue);
jTvalor9.setSize(350, 35);
jTvalor9.setLocation(45, 270);
jTvalor9.setForeground(Color.blue);
jTvalor10.setSize(350, 35);
jTvalor10.setLocation(45, 285);
jTvalor10.setForeground(Color.blue);
Painel p = new Painel();
p.setBounds(490, 50, 270, 270);
p.setBorder(BorderFactory.createLineBorder(Color.black, 2));
getContentPane().setLayout(null);
getContentPane().add(p);
getContentPane().add(L1);
getContentPane().add(L2);
getContentPane().add(L3);
getContentPane().add(mais);
getContentPane().add(igual);
getContentPane().add(igualAzero);
getContentPane().add(jT1);
getContentPane().add(jT2);
getContentPane().add(jTresultado);
getContentPane().add(jTvalor);
getContentPane().add(jTvalor1);
getContentPane().add(jTvalor2);
getContentPane().add(jTvalor3);
getContentPane().add(jTvalor4);
getContentPane().add(jTvalor5);
getContentPane().add(jTvalor6);
getContentPane().add(jTvalor7);
getContentPane().add(jTvalor8);
getContentPane().add(jTvalor9);
getContentPane().add(jTvalor10);
getContentPane().add(b2);
getContentPane().add(cb1);
getContentPane().add(cb2);
getContentPane().add(cb3);
}
class Painel extends JPanel {
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Font F1 = new Font("Sans Serif", Font.BOLD, 60);
g2.setColor(Color.white);
g2.fillRect(10, 10, 250, 250);
//reta y...
g2.setColor(Color.red);
g2.drawLine(135, 240, 135, 25);
//reta x...
g2.setColor(Color.blue);
g2.drawLine(25, 135, 240, 135);
//riscos 0 a 10 de x...
g2.setColor(Color.black);
g2.drawLine(135, 135, 135, 145);
g2.drawLine(145, 135, 145, 145);
g2.drawLine(155, 135, 155, 145);
g2.drawLine(165, 135, 165, 145);
g2.drawLine(175, 135, 175, 145);
g2.drawLine(185, 135, 185, 145);
g2.drawLine(195, 135, 195, 145);
g2.drawLine(205, 135, 205, 145);
g2.drawLine(215, 135, 215, 145);
g2.drawLine(225, 135, 225, 145);
g2.drawLine(235, 135, 235, 145);
// 1 a 10 -x
g2.drawLine(125, 135, 125, 145);
g2.drawLine(115, 135, 115, 145);
g2.drawLine(105, 135, 105, 145);
g2.drawLine(95, 135, 95, 145);
g2.drawLine(85, 135, 85, 145);
g2.drawLine(75, 135, 75, 145);
g2.drawLine(65, 135, 65, 145);
g2.drawLine(55, 135, 55, 145);
g2.drawLine(45, 135, 45, 145);
g2.drawLine(35, 135, 35, 145);
// eixo y... marcacoes...
g2.drawLine(135, 135, 145, 135);
g2.drawLine(135, 125, 145, 125);
g2.drawLine(135, 115, 145, 115);
g2.drawLine(135, 105, 145, 105);
g2.drawLine(135, 95, 145, 95);
g2.drawLine(135, 85, 145, 85);
g2.drawLine(135, 75, 145, 75);
g2.drawLine(135, 65, 145, 65);
g2.drawLine(135, 55, 145, 55);
g2.drawLine(135, 45, 145, 45);
g2.drawLine(135, 35, 145, 35);
//eixo y para baixo... no caso aumenta a contagem...
g2.drawLine(135, 145, 145, 145);
g2.drawLine(135, 155, 145, 155);
g2.drawLine(135, 165, 145, 165);
g2.drawLine(135, 175, 145, 175);
g2.drawLine(135, 185, 145, 185);
g2.drawLine(135, 195, 145, 195);
g2.drawLine(135, 205, 145, 205);
g2.drawLine(135, 215, 145, 215);
g2.drawLine(135, 225, 145, 225);
g2.drawLine(135, 235, 145, 235);
// g2.drawLine(135, 245, 145, 245);
//traçar a reta da equacao... e alguns pontos ... ou grafico geral
calcula();
Ellipse2D vertice=new Ellipse2D.Double(133+(xVertice*10),133-(yVertice*10), 5, 5) ;
g2.fill(vertice);
//xises
g2.setColor(Color.red);
Ellipse2D vertice1=new Ellipse2D.Double(135+(xLinha*10),135, 5, 5) ;
Ellipse2D vertice2=new Ellipse2D.Double(135+(xDuasLinhas*10),135, 5, 5) ;
g2.fill(vertice1);
g2.fill(vertice2);
//traçar a linha..
// Cria uma nova curva
QuadCurve2D q = new QuadCurve2D.Double(); // Define suas coordenadas e a desenha
q.setCurve(135+(xLinha*10), 135 , 135+(xVertice*10) , 135-(yVertice*10), 135+(xDuasLinhas*10),135 );
g2.draw(q);
double tamanho=xDuasLinhas-xLinha;
System.out.println("tamanho :"+tamanho);
//tentando traçar o gráfico de forma melhor... fazer estudo sobre isto...
/*for(double calculo=1; calculo<50; calculo=calculo+10){
Ellipse2D vertice3=new Ellipse2D.Double(135+((xLinha*10)-calculo),135, 5, 5);
g2.fill(vertice3);
}
g2.setColor(Color.blue);
double xv= 135+(xVertice*10);
/* for( double laco=0; laco<40; laco=laco+5 ){
Ellipse2D vertice3=new Ellipse2D.Double(135+(xDuasLinhas*10)+laco,laco+ 135-(yVertice*10), 4, 4) ;
g2.fill(vertice3);
System.out.println("valor de laco"+laco);
}
*/
g2.dispose();
}//paint...
}//fecha a classe painel...
//acao dos botoes
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b2) {
jT1.setEnabled(true);
jT2.setEnabled(true);
jTresultado.setEnabled(true);
jT1.setText("");
jT2.setText("");
jTresultado.setText("");
repaint();
}
}
//checkboxes
public void itemStateChanged(ItemEvent e) {
if (e.getSource() == cb1) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (jT1.getText().equals("0")) {
jT1.setText("");
}
if (jT1.getText().equals("1") || jT1.getText().equals("")) {
j1 = 1;
} else {
j1 = Integer.parseInt(jT1.getText());
}
j1 = j1 * (-1);
jTvalor3.setText("a tem valor negativo. a= " + j1);
negativo1 = true;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
negativo1 = false;
}
}
if (e.getSource() == cb2) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (jT2.getText().equals("0")) {
jT2.setText("");
}
if (jT2.getText().equals("1") || jT2.getText().equals("")) {
j2 = 1;
} else {
j2 = Integer.parseInt(jT2.getText());
}
j2 = j2 * (-1);
jTvalor4.setText("b tem valor negativo. b= " + j2);
negativo2 = true;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
negativo2 = false;
}
}
if (e.getSource() == cb3) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (jTresultado.getText().equals("0")) {
jTresultado.setText("");
}
if (jTresultado.getText().equals("1") || jTresultado.getText().equals("")) {
jresultado = 1;
} else {
jresultado = Integer.parseInt(jTresultado.getText());
}
jresultado = jresultado * (-1);
jTvalor5.setText("c tem valor negativo. c= " + jresultado);
negativo3 = true;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
negativo3 = false;
}
}
}
public void calcula() { //se vazio ou 1, a vale 1...
try {
//nao aceita zero em jt1 e jt2...
if (jT1.getText().equals("0")) {
jT1.setText("");
}
if (jT2.getText().equals("0")) {
jT2.setText("");
}
if (jTresultado.getText().equals("0")) {
jTresultado.setText("");
}
//se um ou vazio é um, senao é o numero digitado, se passar na exceção.
if (jT1.getText().equals("1") || jT1.getText().equals("")) {
j1 = 1;
} else {
j1 = Integer.parseInt(jT1.getText());
}
//se vazio ou 1, b vale 1...
if (jT2.getText().equals("1") || jT2.getText().equals("")) {
j2 = 1;
} else {
j2 = Integer.parseInt(jT2.getText());
}
if (jTresultado.getText().equals("1") || jTresultado.getText().equals("")) {
jresultado = 1;
} else {
jresultado = Integer.parseInt(jTresultado.getText());
}
if (negativo1 == false) {
jTvalor3.setText("a tem valor positivo = " + j1);
} else {
j1 = j1 * (-1);
jTvalor3.setText("a tem valor negativo = " + j1);
}
if (negativo2 == false) {
jTvalor4.setText("b tem valor positivo = " + j2);
} else {
j2 = j2 * (-1);
jTvalor4.setText("b tem valor negativo = " + j2);
}
if (negativo3 == false) {
jTvalor5.setText("c tem valor positivo = " + jresultado);
} else {
jresultado = jresultado * (-1);
jTvalor5.setText("c tem valor negativo = " + jresultado);
}
//acima é sobre captação dos dados, aqui é o calculo...
jTvalor.setText("a= " + j1 + " b= " + j2 + " c= " + jresultado);
delta = ((j2 * j2) - (4 * j1 * jresultado));
jTvalor1.setText("o delta e b(2)-4ac, e vale: " + delta);
if (delta < 0) {
jTvalor2.setText("delta(" + delta + ") menor que zero,nao existem solucoes reais");
}
if (delta == 0) {
jTvalor2.setText("delta(" + delta + ") igual a zero, existe uma solucao real");
}
if (delta > 0) {
jTvalor2.setText("delta(" + delta + ") maior que zero, existem duas solucoes reais");
}
//calcula o xis linha e xis duas linhas...
if (delta == 0) { // ou seja so tem uma solução... //-b/2a
xLinha = ((j2 * (-1)) / (2 * j1));
jTvalor6.setText("A solucao 1 da equacao e -b:2a :" + xLinha);
}
jTvalor7.setText("A solucao 2 da equacao nao existe:");
if (delta > 0) { // ou seja ha 2 soluções...
//um é mais outro é menos...
xLinha = (((j2 * (-1)) + Math.sqrt(delta)) / (2 * j1));
xDuasLinhas = (((j2 * (-1)) - Math.sqrt(delta)) / (2 * j1));
xLinha2= (int)xLinha;
xDuasLinhas2= (int)xDuasLinhas;
jTvalor6.setText("A solucao 1 da equacao e -b+(raiz de delta):2a :" + xLinha);
jTvalor7.setText("A solucao 2 da equacao e -b-(raiz de delta):2a :" + xDuasLinhas);
}
if (delta < 0) {
jTvalor6.setText("A solucao 1 da equacao nao existe:");
jTvalor7.setText("A solucao 2 da equacao nao existe:");
}
if (j1 < 0) {
jTvalor8.setText("a<0 (a menor que zero, ponto maximo, curva voltada para baixo");
}
if (j1 > 0) {
jTvalor8.setText("a>0 (a maior que zero, ponto minimo,curva voltada para cima");
}
//calcula os vertices
yVertice = -(delta / (4 * j1));
xVertice = -(j2 / (2 * j1));
if (yVertice == 0) {
yVertice = -yVertice;
}
if (xVertice != 0) {
xVertice = -xVertice;
}
jTvalor9.setText("vertice Y, delta/4a =" + yVertice + " vertice X, b/2a =" + xVertice);
} catch (NumberFormatException e) {
jT1.setText("");
jT2.setText("");
jTresultado.setText("");
} finally {
repaint();
}
}//encerra o calcula...
public static void main(String[] raghy) {
JFrame frame = new equacao2Grau();
frame.setVisible(true);
}
}
e precisa desta
:
package descobriroxis;
import java.awt.Color;
import javax.swing.JFrame;
/**
*
* @author raghy
*/
public class ClasseBase extends JFrame{
public ClasseBase () {
setTitle("teste grafico");
setBounds(100,75,800,450);
setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
getContentPane().setBackground(new Color(255,245,180));
}
public static void main(String[]raghy) {
new ClasseBase().setVisible(true);
}
}
segue aí da um retorno…
e eu quero ajuda para a curva do gráfico… ela não chega ao vértice corretamente…
valeu.