import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Hanoi { public static void main(String[] args) { JFrame frame = new JFrame("Hanoi"); frame.setVisible(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComponent c = new JPanel(new BorderLayout()); frame.setContentPane(c); final JTextArea t = new JTextArea(); c.setPreferredSize(new Dimension(600,400)); JScrollPane sp = new JScrollPane(t); c.add(sp, BorderLayout.CENTER); final JSlider slider = new JSlider(JSlider.VERTICAL,1,20,4); slider.setPaintLabels(true); slider.setMajorTickSpacing(1); slider.setSnapToTicks(true); slider.setMinorTickSpacing(1); slider.setPaintTicks(true); JButton but = new JButton("Start"); c.add(slider, BorderLayout.EAST); c.add(but, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); but.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { t.setText(""); new Thread(new Runnable() { public void run() { hanoi(slider.getValue(),"alpha", "beta", "gamma", t, 1); } }).start(); } }); } private static int hanoi(int n, String from, String via, String to, JTextArea t, int c) { if (n > 0) { c = hanoi(n-1, from, to, via, t, c); t.append(c + ": "+ from + " -> " + to + "\n"); c++; c = hanoi(n-1, via, from, to, t, c); } return c; } }