Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* @author FARHAN
*/
int[] values;
int i=0;
BubbleSort sorter1;
String[] parts;
SortPane sortPane ;
// main
public static void main(String[] args) {
// constructor
public TestSort() {
EventQueue.invokeLater(new Runnable() {
@Override
// Label
label.setForeground(Color.red);
//label.setBackground(new Color(150,235,210,100));
label.setBackground(Color.yellow);
label.setOpaque(true);
label.setBorder(BorderFactory.createLineBorder(Color.white, 3, true));
frame.add(label);
// Buttons
bubble.setForeground(Color.magenta);
bubble.setBackground(Color.white);
bubble.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
bubble.setBorderPainted(true);
frame.add(bubble);
insertion.setForeground(Color.magenta);
insertion.setBackground(Color.white);
insertion.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
insertion.setBorderPainted(true);
frame.add(insertion);
merge.setForeground(Color.magenta);
merge.setBackground(Color.white);
merge.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
merge.setBorderPainted(true);
frame.add(merge);
quick.setForeground(Color.magenta);
quick.setBackground(Color.white);
quick.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
quick.setBorderPainted(true);
frame.add(quick);
selection.setBackground(Color.white);
selection.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
selection.setBorderPainted(true);
frame.add(selection);
radix.setForeground(Color.magenta);
radix.setBackground(Color.white);
radix.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
radix.setBorderPainted(true);
frame.add(radix);
heap.setForeground(Color.magenta);
heap.setBackground(Color.white);
heap.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
heap.setBorderPainted(true);
frame.add(heap);
create.setForeground(Color.magenta);
create.setBackground(Color.white);
create.setBorder(BorderFactory.createDashedBorder(Color.GREEN, 5, 2, 0, true));
create.setBorderPainted(true);
frame.add(create);
// Textfield
textfield.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2, true));
frame.add(textfield);
panel.setLayout(new BorderLayout());
panel.setBackground(Color.GREEN);
frame.add(panel);
create.addActionListener(new ActionListener() {
@Override
panel.removeAll();
String s = textfield.getText();
panel.setVisible(false);
parts = str.split(",");
values[i] = Integer.parseInt(parts[i]);
}
panel.setVisible(false);
panel.add(createSortPane(values));
panel.setVisible(true);
panel.repaint();
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setPreferredSize(new Dimension(screensize.width,screensize.height));
frame.getContentPane().setBackground(Color.CYAN);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
bubble.addActionListener(new ActionListener() {
@Override
panel.removeAll();
panel.setVisible(false);
panel.add(createSortPane(values));
sorter.sort();
panel.repaint();
panel.setVisible(true);
});
insertion.addActionListener(new ActionListener() {
@Override
panel.removeAll();
i=1;
panel.setVisible(false);
panel.add(createSortPane(values));
sorter.sort();
panel.repaint();
panel.setVisible(true);
});
selection.addActionListener(new ActionListener() {
@Override
i=2;
panel.removeAll();
panel.setVisible(false);
panel.add(createSortPane(values));
sorter.sort();
panel.repaint();
panel.setVisible(true);
});
});
sortPane.setSorter(sorter1);
sorters.add(sorter1);
if(i==1){
sortPane.setSorter(sorter2);
sorters.add(sorter2);
i=0;
else if(i==2){
sortPane.setSorter(sorter3);
sorters.add(sorter3);
i=0;
return sortPane;
@Override
super.paintComponent(g);
int x = insets.left;
switch (getSorter().getState()) {
case Sorting:
fill = Color.green;
highlight = Color.red;
create.setEnabled(false);
break;
case Done:
fill = Color.blue;
create.setEnabled(true);
break;
g2d.setColor(fill);
g2d.setColor(highlight);
}
x += colWidth;
g2d.dispose();
this.repaint();
return sorter;
System.out.println("in setsorter");
if (sorter != value) {
if (sorter != null){
sorter.removeChangeListener(getChangeHandler());
sorter = value;
if (sorter != null) {
sorter.addChangeListener(getChangeHandler());
maxValue = 0;
this.repaint();
}
public ChangeHandler getChangeHandler() {
if (changeHandler == null) {
return changeHandler;
@Override
repaint();
Waiting,
Sorting,
Done
@Override
return state;
}
public void setState(State value) {
if (value != state) {
state = value;
fireStateChanged();
@Override
return values;
@Override
listeners.add(listener);
@Override
listeners.remove(listener);
if (listeners.size() > 0) {
listeners.forEach((listener) -> {
listener.stateChanged(evt);
});
}
}
@Override
return activeIndices.contains(index);
activeIndices.clear();
activeIndices.add(lower);
activeIndices.add(upper);
fireStateChanged();
setActiveIndicies(i, j);
int x = anArrayOfInt[i];
anArrayOfInt[i] = anArrayOfInt[j];
anArrayOfInt[j] = x;
fireStateChanged();
// Bubble Sort
super(values);
@Override
setState(Sorter.State.Sorting);
outter = 0;
inner = 1;
@Override
inner++;
outter++;
inner = 1;
} else {
setActiveIndicies(inner - 1, inner);
} else {
((Timer) e.getSource()).stop();
setState(Sorter.State.Done);
});
timer.setInitialDelay(1000);
timer.setDelay(500);
timer.setRepeats(true);
timer.start();
// Insertion Sort
super(values);
@Override
setState(State.Sorting);
@Override
setActiveIndicies(i, j);
int x = anArrayOfInt[i];
anArrayOfInt[i] = anArrayOfInt[j];
anArrayOfInt[j] = x;
fireStateChanged();
@Override
swap(values, j, j - 1);
try {
Thread.sleep(1000);
SwingUtilities.invokeLater(new Runnable() {
@Override
setState(State.Done);
});
}
}
// Selection Sort
super(values);
setState(TestSort.Sorter.State.Sorting);
@Override
setActiveIndicies(i, j);
int x = anArrayOfInt[i];
anArrayOfInt[i] = anArrayOfInt[j];
anArrayOfInt[j] = x;
fireStateChanged();
@Override
int index = i;
index = j;
swap(values , i ,index);
try{
Thread.sleep(1000);
SwingUtilities.invokeLater(new Runnable() {
@Override
setState(TestSort.Sorter.State.Done);
});