JLabels on one line
I have 3 JLabels which are rapidly updated with new data (numbers). I want tot add the three labels on one line (horizontally) and don't want them to move when the numbers change. Whatever layout I use they always move when the length of the numbers change. I also tried using \t and only using one label, but that also doesn't work.
Example (what is supposed to happen):
Number 1: 550 Number 2: 400 Number 3: 56156165
Number 1: 5Number 2: 4Number 3: 56
What happens now (I'm using borderlayout and added one to west, center, east)
Number 1: 550 Number 2: 400 Number 3: 56156165
Number 1: 5Number 2: 4Number 3: 56
It seems like such an easy problem, but after a lot of trying I can't figure it out.
[751 byte] By [
phalkonea] at [2007-11-26 17:55:11]

# 2
Try this for ideas (horizontal BoxLayout with minimum, maximum and preferred sizes set equal for each JLabel)
package testing;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Random;
public class Test
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.LINE_AXIS));
final JLabel label1 = new JLabel("Number 1:");
final JLabel label2 = new JLabel("Number 2:");
final JLabel label3 = new JLabel("Number 3:");
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
Random r = new Random();
label1.setText("Number 1: " + r.nextInt());
label2.setText("Number 2: " + r.nextInt());
label3.setText("Number 3: " + r.nextInt());
}
};
frame.add(label1);
frame.add(label2);
frame.add(label3);
Dimension d = new Dimension(150, 20);
for (Component c : frame.getContentPane().getComponents())
{
c.setMinimumSize(d);
c.setPreferredSize(d);
c.setMaximumSize(d);
}
frame.pack();
frame.setVisible(true);
new Timer(200, action).start();
}
}