import javax.swing.*; import javax.swing.event.*; import javax.swing.border.*; import java.lang.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.util.*; import java.io.*; import EqPanel; import EqAfin; import Punto; public class Fractal extends JFrame { EqPanel[] ep = new EqPanel[32]; BufferedImage frac; JScrollPane sp; JPanel jp; JButton GenFract; JButton GuaFract; JButton CarFract; JButton GuaImg; int numeq=4; JSlider NumEq; JLabel VNumEq; String TS1=new String(""); String TS2=new String(""); JTextField Y0; JTextField X0; JTextField N; JTextField X; JTextField Y; JTextField W; JTextField H; JTextField DimX; JTextField DimY; public Fractal(String name) { super(name); Container cp = getContentPane(); cp.setLayout(null); Insets i = cp.getInsets(); jp = new JPanel(); sp = new JScrollPane(jp); sp.setPreferredSize(new Dimension(400,200)); jp.setLayout(new FlowLayout()); sp.setVerticalScrollBarPolicy(sp.VERTICAL_SCROLLBAR_ALWAYS); sp.setHorizontalScrollBarPolicy(sp.HORIZONTAL_SCROLLBAR_NEVER); cp.add(sp); sp.setBounds(25,275,475,155); GenFract = new JButton("Generar Fractal"); GenFract.addActionListener(AGenFract); GuaFract = new JButton("Guardar Fractal"); GuaFract.setEnabled(false); //GuaFract.addActionListener(); CarFract = new JButton("Cargar Fractal"); CarFract.setEnabled(false); //CarFract.addActionListener(); GuaImg = new JButton("Guardar Imagen"); GuaImg.setEnabled(false); GuaImg.addActionListener(AGuaImg); cp.add(GenFract); GenFract.setBounds(50,25,125,50); cp.add(GuaImg); GuaImg.setBounds(200,25,125,50); cp.add(GuaFract); GuaFract.setBounds(350,25,125,25); cp.add(CarFract); CarFract.setBounds(350,50,125,25); JLabel[] Parm=new JLabel[8]; for (int k=0;k<6;k++) { Character c=new Character((char)(65+k)); Parm[k]=new JLabel(c.toString()); cp.add(Parm[k]); Parm[k].setBounds(55*k+35,250,55,25); Parm[k].setHorizontalAlignment(JLabel.CENTER); } Parm[6]=new JLabel("Prob"); cp.add(Parm[6]); Parm[6].setBounds(365,250,55,25); Parm[6].setHorizontalAlignment(JLabel.CENTER); Parm[7]=new JLabel("Color"); cp.add(Parm[7]); Parm[7].setBounds(420,250,55,25); Parm[7].setHorizontalAlignment(JLabel.CENTER); JPanel opt = new JPanel(); opt.setLayout(new FlowLayout(FlowLayout.LEFT)); opt.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Opciones"),BorderFactory.createEmptyBorder(0,0,0,0))); cp.add(opt); opt.setBounds(25,100,300,150); opt.add(new JLabel("Posición Inicial: (")); X0=new JTextField("0",3); opt.add(X0); opt.add(new JLabel(",")); Y0=new JTextField("0",3); opt.add(Y0); opt.add(new JLabel(")")); opt.add(new JLabel(" ")); opt.add(new JLabel("Total de puntos:")); N=new JTextField("480000",10); opt.add(N); opt.add(new JLabel(" ")); opt.add(new JLabel("Eje X: [")); X=new JTextField("-4",3); opt.add(X); opt.add(new JLabel(",")); W=new JTextField("6",3); opt.add(W); opt.add(new JLabel("]")); opt.add(new JLabel(" ")); opt.add(new JLabel("Eje Y: [")); Y=new JTextField("0",3); opt.add(Y); opt.add(new JLabel(",")); H=new JTextField("10",3); opt.add(H); opt.add(new JLabel("]")); opt.add(new JLabel("Imagen:")); DimX=new JTextField("800",4); opt.add(DimX); opt.add(new JLabel("x")); DimY=new JTextField("600",4); opt.add(DimY); NumEq = new JSlider(JSlider.VERTICAL, 1, 32, 4); NumEq.addChangeListener(SlNe); NumEq.setMajorTickSpacing(10); NumEq.setMinorTickSpacing(1); NumEq.setPaintTicks(true); NumEq.setPaintLabels(true); NumEq.setSnapToTicks(true); NumEq.setInverted(true); NumEq.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); cp.add(NumEq); NumEq.setBounds(350,100,25,150); JLabel VNumEqt=new JLabel("Ecuaciones:"); VNumEqt.setHorizontalAlignment(JLabel.CENTER); cp.add(VNumEqt); VNumEqt.setBounds(375,100,100,50); VNumEq=new JLabel(TS1+numeq+TS2); VNumEq.setHorizontalAlignment(JLabel.CENTER); cp.add(VNumEq); VNumEq.setBounds(375,150,100,50); for (int k=0;k<32;k++) { ep[k]= new EqPanel(new EqAfin(0,0,0,0,0,0,0,Color.black)); } ep[0]= new EqPanel(new EqAfin(0,0,0,1311,0,0,819,Color.red)); ep[1]= new EqPanel(new EqAfin(6144,328,-328,6963,0,13107,6062,Color.blue)); ep[2]= new EqPanel(new EqAfin(1638,-2130,1884,1802,0,13107,655,Color.yellow)); ep[3]= new EqPanel(new EqAfin(-1229,2294,2130,1966,0,3604,655,Color.green)); jp.add(ep[0]); jp.add(ep[1]); jp.add(ep[2]); jp.add(ep[3]); jp.setPreferredSize(new Dimension(400,(int)(5+numeq*(5+ep[0].getPreferredSize().getHeight())))); } public static void main(String[] args) { JFrame frame = new Fractal("Generador de Fractales IFS"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setBounds(50,50,525,475); frame.setVisible(true); frame.setResizable(false); } ChangeListener SlNe = new ChangeListener() { public void stateChanged(ChangeEvent evento) { int num=(int)(NumEq.getValue()); VNumEq.setText(TS1+num+TS2); if (num>numeq) for (int i=numeq;i0 && a0 && bnumP && j<(numP/100)) break; } JFrame F=new JFrame("Fractal"); JLabel I=new JLabel(new ImageIcon((Image)frac)); F.getContentPane().add(I); F.setBounds(100,100,dimX,dimY); F.setVisible(true); } }; ActionListener AGuaImg = new ActionListener() { public void actionPerformed(ActionEvent evento) { if (frac !=null) { final JFileChooser fc = new JFileChooser(); //FileFilter filter=new FileFilter(); //filter.addExtension("gif"); //fc.setFileFilter(new FileFilter("gif")); int returnVal = fc.showSaveDialog(Fractal.this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); } } } }; }