Re: 5th col dies, cols 6 thru 15 move 1 col left, 15th col is born
On 4/19/2013 10:29 PM, clusa@aol.com wrote:
On Friday, April 19, 2013 8:03:06 PM UTC-4, Knute Johnson wrote:
Are these data entry fields? Or just to be displayed? Probably just drawing the
data on a JComponent would be the easiest and quickest but would take a little
more effort to create. JLabels are nice too. -- Knute Johnson
So, you suggest to use a JComponent with (300 x 15) JLabels.
Why would using a JComponent be better than using a JFrame containing JPanels.
With a JComponent, will I be able to easily change the color of the JLabels.
I guess I should use a Layout also.
I was planning to have the columns move left after N seconds.
Are there any other details that I should worry about such as flicker.
Thanks,
No, what I was suggesting was that you draw your data on the JComponent,
or JPanel if you want, rather than use components as it will render much
quicker and you can do a fade in/out or change colors when you move your
data pretty easily. It would be easier to scale as well.
import java.awt.*;
import java.awt.event.*;
public class test extends JComponent implements Runnable {
private static final String text = "Now is the time for all good
men to " +
"come to the aid of their country. The quick brown fox jumped
over the " +
"lazy red dog. Four score and seven years ago our fathers brought
forth" +
"on this continent a new nation conceived in liberty and dedicated
to " +
"the proposition that all men are created equal.";
private final String[][] words = new String[6][6];
private volatile int n;
public test() {
setPreferredSize(new Dimension(400,300));
String[] array = text.split(" ");
for (int i=0; i<6; i++)
for (int j=0; j<6; j++)
words[i][j] = array[n++];
n = 0;
setFont(new Font("Monospaced",Font.PLAIN,10));
}
public void paintComponent(Graphics g) {
g.setColor(Color.YELLOW);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(Color.BLUE);
for (int cols=0; cols<6; cols++)
for (int rows=0; rows<6; rows++)
g.drawString(words[cols][rows],10+60*cols,20+15*rows);
}
public void run() {
while (true) {
++n;
repaint();
try {
Thread.sleep(5000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
String[] temp = new String[6];
for (int i=0; i<6; i++)
temp[i] = words[2][i];
for (int i=2; i<5; i++)
for (int j=0; j<6; j++)
words[i][j] = words[i+1][j];
for (int i=0; i<6; i++)
words[5][i] = temp[i];
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
test t = new test();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(t,BorderLayout.CENTER);
f.setSize(400,300);
f.setVisible(true);
new Thread(t).start();
}
});
}
}
--
Knute Johnson