我在使用帶有MigLayout的JTable之後使用JButton時遇到了令人難以置信的問題。它完全沒有響應,除非我將它推到JTable的足夠遠處(然後它可以正常運行)。使用MigLayout,爲什麼在JTable之後的JButton沒有響應,以及如何解決這個問題?
我試着用最終用戶產品和最新版本的MigLayout JAR版本運行代碼;相同的結果。
下面是一個示例代碼重現問題(Main.java):我想它是與表頭和自己在同一個佈局單元結束了表
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
public class Main extends JFrame {
private JPanel panel;
private JTextField textField;
private JButton chooseButton;
private JTable table;
private JButton reloadButton;
private final DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
public Main() {
panel = new JPanel(new MigLayout("debug", "[][grow][]"));
setContentPane(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
/*** First row ***/
// "File:"
panel.add(new JLabel("File:"));
// textField for filename
textField = new JTextField("No file selected yet!");
textField.setEditable(false);
panel.add(textField, "growx");
// "Choose..." button
chooseButton = new JButton("Choose...");
panel.add(chooseButton, "wrap, sg buttons");
/*** Second row ***/
panel.add(new JLabel());
table = new JTable(model);
model.setColumnIdentifiers(new String[] {"col title"});
JScrollPane scrollpane = new JScrollPane(table);
Dimension scrollpaneDimension = new Dimension(125, 110);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
table.setPreferredScrollableViewportSize(scrollpaneDimension);
table.setFillsViewportHeight(true);
panel.add(table.getTableHeader(), "grow");
panel.add(scrollpane, "grow");
reloadButton = new JButton("Reload");
panel.add(reloadButton, "top, wrap, sg buttons");
pack();
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
,但我我真的不確定這一點。正如我所說的,如果我將按鈕按下的距離遠遠超過JTable,它將再次工作。如果我把它放在下一行,它不起作用,我不得不把它再往下移一行。
您需要在您的工作區中運行代碼的唯一庫是MigLayout。
謝謝大家的幫助,非常感謝!
M. Joanis
的問題不會有任何與MigLayout,對不起米格! – Joanis 2010-03-24 23:39:38