JScrollPaneオブジェクトに含まれるJTableオブジェクトによって、MigLayoutが混乱するように見えます。 JScrollPane内にJTableを持つのは普通のイディオムである可能性が高いと思われるので、なぜそれを見つけるのが重要だと思いました。JScrollBarオブジェクトに含まれるJTableオブジェクトによって混乱するMigLayout
添付のサンプルプログラムでは、12行4列の簡略化されたフォームが作成されています。すべての幅と高さはパーセンテージとして設定されます。複数のコンポーネントがフォームに追加され、すべてがセルの位置になります。いくつかの行または列にまたがっています。最後の列には、セル行のインデックスとサイズの割合が表示されます。
引数 "JLabel"でプログラムを開始すると、JSCrollPaneに含まれるJLabelが列0に追加され、すべての整列が良好になります。プログラムが引数 "JTable"で開始されている場合、すべての列の行サイズは中断されます。
これはバグですか?または機能ですか?
Make: javac -classpath <path to miglayout> migtest.java
Usage: java -classpath <path to miglayout> migtest <JTable|JLabel>
注:下のコードが難しく表示されている場合(タブなし)、さまざまなペースト方法を試しました。プレビューを正しく表示できませんでした。それを修正するために私ができることがあれば教えてください。
答えの私は本当に;-)それらを掘り下げるするだけでザッタイプのためにあまりにも多くの(コンポーネントの制約がたくさんありますimport java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.text.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableColumn;
import net.miginfocom.swing.MigLayout;
public class Migtest extends JFrame {
public final static int appWidth = 1200; // default
public final static int appHeight = 800; // default
String[] clientColNames = { "Name", "Address", "Alternate Address" };
JComponent createClientsPane(int numCols, String arg) {
if (arg.equals("jtable")) {
JTable clientsTable = new JTable(1, numCols);
clientsTable.getTableHeader().setReorderingAllowed(false);
clientsTable.getSelectionModel().setSelectionMode(
ListSelectionModel.SINGLE_SELECTION);
clientsTable.getSelectionModel().setSelectionInterval(0, 0);
JScrollPane scrollPane = new JScrollPane(clientsTable);
return scrollPane;
} else
return new JScrollPane(new JLabel("bear tenders"));
}
void init(String[] args) {
JPanel topPanel = null, subpanel = null;
String arg;
if (args.length != 1) {
System.out.println("missing arg - s/b 'JLabel' or 'jTable'");
System.exit(0);
}
arg = args[0].trim().toLowerCase();
if (!arg.equals("jlabel") && !arg.equals("jtable")) {
System.out.println("missing arg - s/b 'JLabel' or 'jTable'");
System.exit(0);
}
setSize(appWidth, appHeight);
topPanel = new JPanel(new MigLayout("fill,debug",
"[30%][15%][50%][5%]",
"[5%][7%][5%][10%][7%][7%][7%][7%][6%][7%][2%][30%]"));
JCheckBox dynamicInstrumentCheckbox = new JCheckBox(
"Wood Activities Enabled", false);
topPanel.add(dynamicInstrumentCheckbox, "cell 0 2");
topPanel.add(new JLabel("BEAR TENDERS"), "cell 0 4, alignx center");
topPanel.add(createClientsPane(clientColNames.length, arg),
"cell 0 5, spany 4, grow");
topPanel.add(new JLabel("BEAR FACTS"), "cell 1 4, alignx center");
JRadioButton noneButton = new JRadioButton("None");
topPanel.add(noneButton, "cell 1 5, gapleft 2%");
JRadioButton rangeButton = new JRadioButton("Fact 1");
topPanel.add(rangeButton, "cell 1 6, gapleft 2%");
JRadioButton playbackButton = new JRadioButton("Fact 2");
topPanel.add(playbackButton, "cell 1 7, gapleft 2%");
JButton controlsButton = new JButton("Controls =>");
topPanel.add(controlsButton, "cell 1 8, alignx center");
topPanel.add(new JLabel("GUMMY BEARS"), "cell 2 1, alignx center");
topPanel.add(new JLabel("(gummy bears)"), "cell 2 2, spany 4, grow");
topPanel.add(new JLabel("CHICAGO BEARS"), "cell 2 6, alignx center");
topPanel.add(new JLabel("(chicago bears)"), "cell 2 7, spany 3, grow");
topPanel.add(new JLabel("LOG"), "cell 0 10, alignx left");
JButton clearLogButton = new JButton("Clear Log");
topPanel.add(clearLogButton, "cell 2 10, alignx right");
topPanel.add(new JLabel("(log pane)"), "cell 0 11, spanx 3, grow");
topPanel.add(new JLabel("0-5%"), "cell 3 0, grow");
topPanel.add(new JLabel("1-7%"), "cell 3 1, grow");
topPanel.add(new JLabel("2-5%"), "cell 3 2, grow");
topPanel.add(new JLabel("3-10%"), "cell 3 3, grow");
topPanel.add(new JLabel("4-7%"), "cell 3 4, grow");
topPanel.add(new JLabel("5-7%"), "cell 3 5, grow");
topPanel.add(new JLabel("6-7%"), "cell 3 6, grow");
topPanel.add(new JLabel("7-7%"), "cell 3 7, grow");
topPanel.add(new JLabel("8-6%"), "cell 3 8, grow");
topPanel.add(new JLabel("9-7%"), "cell 3 9, grow");
topPanel.add(new JLabel("10-2%"), "cell 3 10, grow");
topPanel.add(new JLabel("11-30%"), "cell 3 11, grow");
setContentPane(topPanel);
}
public static void main(String[] args) {
try {
Migtest thisTest = new Migtest();
thisText.init(args);
// thisTest.init(new String[] {"jLabel"});
// thisTest.init(new String[] {"jTable"});
// center app window
GraphicsConfiguration gc = thisTest.getGraphicsConfiguration();
Rectangle bounds = gc.getBounds();
thisTest.setLocation(
(int) ((bounds.width - thisTest.appWidth)/2),
(int) ((bounds.height - thisTest.appHeight)/2));
thisTest.setVisible(true);
} catch (Exception e) {
System.out.println("runTest caught exception: " + e.getMessage());
e.printStackTrace();
}
}
} // class test
Javaの命名規則を学び、それらに固執してください(私はあなたのためにここで行いました。小文字のclassName :-)を負うことはできません。 – kleopatra
コードの書式設定に関して:あなたのコードのいくつか(私のIDEがそれを修正する前に試していない:-)? – kleopatra