Re: clone/copy JLabel & JComboBox objects
On Mar 3, 9:05 pm, Eric Sosman <esos...@ieee-dot-org.invalid> wrote:
On 3/3/2011 5:04 PM, albert kao wrote:
Is there a way to clone/copy JLabel& JComboBox objects?
They cannot be cloned in the sense of clone(). As for copyi=
ng,
it depends what you mean by "copy."
The larger question, I think, is "Why do you want duplicates?"
For a JLabel I can almost see it: If you've got a UI with lots and
lots of repetitive text, you might try to re-use "the same" JLabel in
many different positions simultaneously. But I think it's a rare (and
over-busy) UI that will clutter itself with fifty occurrences of the
same label! Just make N JLabels, all with the same text, and be
prepared for unenthusiastic reviews ...
Duplicating a JComboBox makes no sense at all to me. Why in=
the
world would you want N identical combo boxes, all manipulating the
exact same ComboBoxModel and hence the same "setting object" -- well,
I can't think why you'd want this. Please explain.
--
Eric Sosman
esos...@ieee-dot-org.invalid
I want to make the same Swing component (e.g JLabel) appear in
different tabs of a JTabbedPane.
e.g. I want to make label4 to appear in both panel1/tab1 and panel2 in
the following test program.
I am still experimenting (by cloning JLabel, etc) to make it work.
Please help.
public class TestPanel extends JPanel {
JFrame frame = new JFrame();
Container container = frame.getContentPane();
JTabbedPane tabPane = new JTabbedPane();
GridBagLayout gbl = new GridBagLayout();
container.setLayout(gbl);
GridBagConstraints c = new GridBagConstraints();
JPanel panel1 = new JPanel(new GridBagLayout());
JPanel panel2 = new JPanel(new GridBagLayout());
String s = "copy";
JLabel label = new JLabel(s);
c.gridx = 0;
c.gridy = 0;
panel1.add(label, c); // appear in tab 2
JLabel label2 = new JLabel(label.getText());
JLabel label3 = new JLabel("label3");
JLabel label4 = new JLabel("label4");
c.gridy = 1;
panel2.add(label3, c);
c.gridy = 2;
panel2.add(label, c);
c.gridy = 3;
panel2.add(label2, c); // appear in panel2
c.gridy = 4;
panel2.add(label4, c); // do not appear in panel2
panel1.add(label4, c); // appear in panel1
tabPane.add(panel1, "1");
tabPane.add(panel2, "2");
container.add(tabPane);
frame.pack();
frame.setVisible(true);
}
Thanks.