Nadesłany przez Tomasz Lubiński, 31 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_TT.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 two-track */ public class Pharmacode_TT implements ActionListener { JFrame mainFrame; JPanel mainPanel; JPanel inputPanel; JTextField inputValue; JButton generateButton; JBarCode outputBars; public Pharmacode_TT() { mainFrame = new JFrame("Generate Pharmacode two-track"); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //create and set all components inputPanel = new JPanel(); inputValue = new JTextField("12345"); 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_TT pharmacode = new Pharmacode_TT(); } 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 >= 4 && number <= 64570080) { outputBars.clear(); while (number != 0) { if ((number % 3) == 0) { outputBars.print('N'); /* normal */ number = (number-3)/3; } else if ((number % 3) == 2) { outputBars.print('A'); /* above */ number = (number-2)/3; } else { outputBars.print('B'); /* below */ number = (number-1)/3; } } //refresh component outputBars.repaint(); } else { JOptionPane.showMessageDialog(mainFrame, "Incorrect input characters"); } } }