Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder1.news.weretis.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.tele2net.at!news.panservice.it!feed.xsnews.nl!border02.ams.xsnews.nl!feeder04.ams.xsnews.nl!feeder01.ams.xsnews.nl!frontend-F09-12.ams.news.kpn.nl From: Cecil Westerhof Newsgroups: comp.lang.java.programmer Subject: Could this be done better Organization: Decebal Computing X-Face: "(y8cC@tg_12{">GF'UXTW]FHI2wMiZNrnf'1EFQ&O#$m:f#O7+7}kR,v+Pti8=Vi/Z"g^?b"E X-Homepage: http://www.decebal.nl/ Date: Mon, 24 Nov 2014 12:16:42 +0100 Message-ID: <87zjbg97c5.fsf@Equus.decebal.nl> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) Cancel-Lock: sha1:OkQ+6EusQHnAJ/G+yWV0GikvB7I= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Lines: 107 NNTP-Posting-Host: 77.171.42.144 X-Trace: 1416828536 news.kpn.nl 21101 77.171.42.144@kpn/77.171.42.144:50893 Xref: csiph.com comp.lang.java.programmer:30390 I have mostly programmed back-ends. But I now want also to do some front-end programming. I wrote the following simple program. It does nothing useful, it just displays a description in different colours with the colour appended to the description. I was just wondering if this could be done better. Especially ‘updateColour’. First I did not removed the text, but then I could see the colour changing before the text was changed. This way I find more pleasing and I do not notice that the text disappears. import java.awt.*; import java.util.*; import javax.swing.*; @SuppressWarnings("serial") public class ColourCycling extends JFrame { // public functions public ColourCycling() { java.util.Timer colourTimer = new java.util.Timer(); getContentPane().setBackground(background); setLayout(new GridBagLayout()); label.setFont(new Font("serif", Font.BOLD, 25)); add(label); pack(); setSize(getWidth(), 3 * getHeight()); label.setBackground(background); updateColour(getCurrentColour()); colourTimer.schedule(new SwitchColour(), delay, delay); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle(description); setVisible(true); } public static void main(String[] args) { new ColourCycling(); } // private classes private class Colour { // public public Colour(Color color, String description) { this.color = color; this.description = description; } public Color getColor() { return color; } public String getDescription() { return description; } // private private Color color; private String description; } private class SwitchColour extends TimerTask { public void run() { updateColour(getNextColour()); } } //private functions private Colour getCurrentColour() { return colours[currentColour]; } private Colour getNextColour() { currentColour = (currentColour + 1) % colours.length; return getCurrentColour(); } private void updateColour(Colour newColour) { label.setText(""); label.setForeground(newColour.getColor()); label.setText(description + " : " + newColour.getDescription()); } // private variables private Color background = Color.lightGray; private Colour[] colours = new Colour[] { new Colour(Color.blue, "Blue"), new Colour(Color.red, "Red"), new Colour(Color.orange, "Orange"), new Colour(Color.yellow, "Yellow"), new Colour(Color.green, "Green"), new Colour(Color.cyan, "Cyan"), new Colour(Color.magenta, "Magenta"), new Colour(new Color(0x9C, 0x5D, 0x52), "Brown"), }; private int currentColour = 0; private int delay = 4000; private String description = "JTextArea Color Change Example"; private JLabel label = new JLabel(description + " : " + "XXXXXXXXXXXXXXX"); } -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof