Re: Layout suggestions - table layout
In article
<5200b81f-949f-44f7-a2dc-96044fc34a17@y10g2000prc.googlegroups.com>,
sso <strongsilentone@gmail.com> wrote:
On Apr 29, 6:26??pm, Knute Johnson <nos...@rabbitbrush.frazmtn.com>
wrote:
sso wrote:
I need to layout data in a tabular fashion. ??In html a table
layout would work perfectly. ?? In swing, it does not. ??Firstly I
need multiline cells - there doesn't seem to be a plain easy way
to do this in swing. ?? Is there a work around? ??Other
suggestions?
What's wrong with a JLabel? ??That will do multi-line text and even
some simple HTML if you want.
[Please trim signatures when responding.]
Many Swing components can render HTML 3.2, including tables[1].
The problem I have with using html is that I have no means of auto-
sizing the label (or table cell).
Use a suitable layout to size the labels[1].
I just tried this all out and its not quite doing what I want.
What did you try? You should create a short, compilable example to show
what you're doing and where you're having trouble[2].
Am I missing something?
Sun's tutorial is good place to start[1].
Here's another example:
<code>
package news;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/** @author John B. Matthews */
public class GridTest {
private static final int ROWS = 5;
private static final int COLS = 4;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@ Override
public void run() {
new GridTest().create();
}
});
}
void create() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(ROWS, COLS));
for (int i = 0; i < ROWS * COLS; i++) {
panel.add(new LabelPanel());
}
JFrame f = new JFrame("GridTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
/**
* A LabelPanel has a label showing its current size.
*/
class LabelPanel extends JPanel {
private static final String FORE =
"<html><body align=center>Size: <b>";
private static final String AFT =
"</b><br><i>ad astra<br>per aspera</i></body></html>";
private final JLabel sizeLabel = new JLabel();
public LabelPanel() {
this.setPreferredSize(new Dimension(150, 75));
this.add(sizeLabel);
this.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
int w = e.getComponent().getWidth();
int h = e.getComponent().getHeight();
sizeLabel.setText(FORE + w + "\u00d7" + h + AFT);
}
});
}
}
</code>
[1]<http://java.sun.com/docs/books/tutorial/uiswing/components/html.html>
[2]<http://pscode.org/sscce.html>
[Please trim signatures when responding.]
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>