Sto scrivendo un programma seguendo le forume che da il mio libro ma il frattale disegnato è completamente diverso.Secondo voi perchè? Ecco il codice:
Prima classe
Seconda classecodice:import java.awt.*; import javax.swing.*; public class FractalJPanel extends JPanel{ private Color color; private int level; private final int WIDTH=400; private final int HEIGHT=400; public FractalJPanel(int currentLevel) { color=Color.BLUE; level=currentLevel; setBackground(Color.WHITE); setPreferredSize(new Dimension(WIDTH, HEIGHT)); } public void drawFractal(int level, int xA, int xB,int yA, int yB, Graphics g) { if(level==0) g.drawLine(xA,yA,xB,yB); else { int xC=(xA+xB)/2; int yC=(yA+yB)/2; int xD=xA+(xC-xA)/2-(yC-yA)/2; int yD=yA+(yC-yA)/2+(xC-xA)/2; drawFractal(level-1,xD,yD,xA,yA,g); drawFractal(level-1,xD,yD,xC,yC,g); drawFractal(level-1,xD,yD,xB,yB,g); } } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(color); drawFractal(level,100,90,290,200,g); } public void setColor(Color c) { color=c; } public void setLevel(int currentLevel) { level=currentLevel; } public int getLevel() { return level; } }
codice:import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.*; public class Fractal extends JFrame { private final int WIDTH=400; private final int HEIGHT=480; private final int MIN_LEVEL=0, MAX_LEVEL=15; private Color color=Color.BLUE; private JButton changeColorJButton,increaseLevelJButton,decreaseLevelJButton; private JLabel levelJLabel; private FractalJPanel drawSpace; private JPanel mainJPanel,controlJPanel; public Fractal(){ super("Fractal"); controlJPanel=new JPanel(); controlJPanel.setLayout(new FlowLayout()); changeColorJButton=new JButton("Colore"); controlJPanel.add(changeColorJButton); changeColorJButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { color=JColorChooser.showDialog(Fractal.this,"Scegli un colore",color); if(color==null) color=Color.BLUE; drawSpace.setColor(color); } }); decreaseLevelJButton=new JButton("Decrementa Livello"); controlJPanel.add(decreaseLevelJButton); decreaseLevelJButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int level=drawSpace.getLevel(); level--; if((level>=MIN_LEVEL)&&(level<=MAX_LEVEL)) { levelJLabel.setText("Livello: "+level); drawSpace.setLevel(level); repaint(); } } }); increaseLevelJButton=new JButton("Aumenta livello"); controlJPanel.add(increaseLevelJButton); increaseLevelJButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int level=drawSpace.getLevel(); level++; if((level>=MIN_LEVEL)&&(level<=MAX_LEVEL)) { levelJLabel.setText("Livello: "+level); drawSpace.setLevel(level); repaint(); } } }); levelJLabel=new JLabel("Livello: 0"); controlJPanel.add(levelJLabel); drawSpace= new FractalJPanel(0); mainJPanel=new JPanel(); mainJPanel.add(controlJPanel); mainJPanel.add(drawSpace); add(mainJPanel); setSize(WIDTH,HEIGHT); setVisible(true); } public static void main(String args[]) { Fractal demo=new Fractal(); demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Secondo voi perchè? Ecco il codice:
Rispondi quotando