我试图创建一个包含N行和2列的面板,其中第一列是具有可变长度但在一定范围内的标签(它根据语言改变长度),而第二列包含可能非常长的文本的字段。详细信息具有可变长度字段的JPanel
我使用NetBeans使用GridBagLayout的尝试,不过结果缩放面板或JPanel的截图下方添加很长的领域.. 到明白我的意思的时候是凌乱:
我希望左列与左边界隔开,第一列不会调整为比最长标签更小的值(标签必须始终可读),而第二列应该可视化到其可用的水平空间并且然后显示点(而不是裁剪文本)。
什么也同样令人厌烦的是,虽然我定义西北的方位面板显示垂直于中心
编辑齐:我已经使用TableColumnAdjuster使用表行,而不是标签我的价值观,这样我可以选择用鼠标的值。 我仍然有但行适合文本的长度,而不是包含面板:
public class TestPanel extends JPanel
{
private static ArrayList<String> columnNames = new ArrayList<>();
static JTable table;
MyTableModel myTableModel = new MyTableModel();
static class MyTableModel extends AbstractTableModel
{
private String[] columnNames =
{
"Name", "Value"
};
private Object[][] data =
{
{ "Subject", "very very very very very very very very very very very very very very very very long subject"},
{ "Date", "" },
{ "Location", "" },
{ "Status", "" },
{ "Notes", "" }
};
@Override
public int getColumnCount()
{ return columnNames.length; }
@Override
public int getRowCount()
{ return data.length; }
@Override
public String getColumnName(int col)
{ return columnNames[col]; }
@Override
public Object getValueAt(int row, int col)
{ return data[row][col]; }
@Override
public Class getColumnClass(int c)
{ return getValueAt(0, c).getClass(); }
@Override
public boolean isCellEditable(int row, int col)
{ return false; }
@Override
public void setValueAt(Object value, int row, int col)
{ }
}
public TestPanel()
{
table = new JTable(myTableModel);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnAdjuster tca = new TableColumnAdjuster(table);
tca.adjustColumns();
JPanel panel = new JPanel(new GridBagLayout());
panel.add(table);
GridBagConstraints constraints = new GridBagConstraints();
constraints.weighty = 1.0;
constraints.fill = GridBagConstraints.VERTICAL;
panel.add(Box.createGlue(), constraints);
add(panel);
}
public static void main(String args[])
{
JFrame frame = new JFrame();
frame.setContentPane(new TestPanel());
frame.setSize(300, 800);
frame.setVisible(true);
}
}
而TableColumnAdjuster是TableColumnAdjuster ..我所得到的仍然是如下
为什么不直接使用一个JTable? – RudolphEst 2013-03-18 11:38:43