मेरे पास कई कॉलम के साथ एक JTable है। मैं एक विशेष कॉलम का आकार बदलना चाहता हूं। मैं उम्मीद कर रहा था कि setPreferredWidth का उपयोग करके, कॉलम उस आकार का आकार बदल जाएगा, या सामग्री का आकार कोई छंटनी नहीं हुई और शेष कॉलम शेष स्थान लेते हैं, लेकिन इसके बजाय, सभी कॉलम, जिसमें मैंने आकार बदल दिया, तालिका के सभी स्थान को समान रूप से विभाजित करता है; जैसे कि setPreferredWidth ने को पर कुछ भी नहीं किया था। असल में, मैं एक कॉलम की चौड़ाई निर्धारित करने में सक्षम होना चाहता हूं और इसे उस आकार पर बिना किसी सामग्री के छिड़काव (क्या मैंने अभी तक इतना अधिक जोर दिया है?) इस तरह से कम किया है कि सभी कॉलम जिन्हें आकार में नहीं बदला गया है शेष जगह SetMaxWidth का उपयोग सामग्री को छोटा करता है (क्या मैंने उल्लेख किया है कि मुझे यह पसंद नहीं आया?) मैं इसे बिना किसी कटाई के कॉलम का आकार बदल/छोटा कर सकता हूं और इसके बिना बिल्कुल कुछ भी नहीं? यहाँ अपमानजनक कोड नहीं है: -:TableColumn setPreferredWidth काम नहीं कर रहा
new GridBagConstraints(0, 3, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 2), 0, 0))
संपादित करें:
for (int i = 0, x = 0; i < table.getColumnModel().getColumnCount(); i++)
if ((x = model.getColumnWidth(i)) > -1)
table.getColumnModel().getColumn(i).setPreferredWidth(x);
तालिका एक JPanel (MyListPanel BorderLayout) में है जो एक और JPanel (GridBagLayout) में है के साथ जोड़ा इस के लिए निर्माता है मेरी JPanel के उपवर्ग:
public MyListPanel(boolean showHeader, String title, ColData...columns) {
super(new BorderLayout());
model = new MyListTableModel(columns);
table = new JTable(model);
table.addFocusListener(this);
add(table);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
setTitle(title);
if (showHeader)
add(table.getTableHeader(), BorderLayout.NORTH);
for (int i = 0, x = 0; i < table.getColumnModel().getColumnCount(); i++)
if ((x = model.getColumnWidth(i)) > -1)
table.getColumnModel().getColumn(i).setPreferredWidth(x);
setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
}
और MyListTableModel.ColData:
public static class ColData {
private int index;
private String title;
private int width;
public ColData(int _index, String _title, int _width) { index = _index; title = _title; width = _width; }
}
चाल :( –