Nadesłany przez Tomasz Lubiński, 25 lipca 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Pharmacode_OT.java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* @author Tomasz Lubinski
* (c)2007 algorytm.org
*
* Pharmacode one-track
*/
public class Pharmacode_OT implements ActionListener {
JFrame mainFrame;
JPanel mainPanel;
JPanel inputPanel;
JTextField inputValue;
JButton generateButton;
JBarCode outputBars;
public Pharmacode_OT() {
mainFrame = new JFrame("Generate Pharmacode one-track");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//create and set all components
inputPanel = new JPanel();
inputValue = new JTextField("25");
generateButton = new JButton("Generate");
inputPanel.add(inputValue);
inputPanel.add(generateButton);
outputBars = new JBarCode();
//Listen to events from the generate button.
inputValue.addActionListener(this);
generateButton.addActionListener(this);
//Create the main panel
mainPanel = new JPanel(new GridLayout(2, 1));
mainPanel.add(inputPanel);
mainPanel.add(outputBars);
mainFrame.getContentPane().add(mainPanel, BorderLayout.CENTER);
mainFrame.setSize(450, 300);
mainFrame.setVisible(true);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
@SuppressWarnings("unused")
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
Pharmacode_OT pharmacode = new Pharmacode_OT();
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
public void actionPerformed(ActionEvent arg0) {
int number = Integer.parseInt(inputValue.getText());
if (number >= 3 && number <= 131070) {
outputBars.clear();
while (number != 0)
{
if ((number % 2) == 0)
{
outputBars.print('W');
number = (number-2)/2;
}
else
{
outputBars.print('N');
number = (number-1)/2;
}
}
//refresh component
outputBars.repaint();
}
else {
JOptionPane.showMessageDialog(mainFrame, "Incorrect input characters");
}
}
}

