GridLayout 的未定义行为
Undefined behaviour of GridLayout
我在 Java 中创建了一个 GridLayout(3,2)
并插入了 6 个 JLabel
组件。它们应该按照代码编写的顺序插入,但它们是按降序排列的。为什么?
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Summary_Graph_JPanel1 extends JPanel {
public Summary_Graph_JPanel1() {
GridLayout g=new GridLayout(3,2);
setLayout(g);
add(new JLabel("1"),JLabel.CENTER);
add(new JLabel("2"),JLabel.CENTER);
add(new JLabel("3"),JLabel.CENTER);
add(new JLabel("4"),JLabel.CENTER);
add(new JLabel("5"),JLabel.CENTER);
add(new JLabel("6"),JLabel.CENTER);
}
}
这是它的样子:
JLabel.CENTER
的使用是在错误的地方。它应该在 JLabel
构造函数中而不是交给 add(JLabel, constraint)
方法。这不是布局的适当约束,而是标签的约束。
import java.awt.GridLayout;
import javax.swing.*;
public class Summary_Graph_JPanel1 extends JPanel {
public Summary_Graph_JPanel1() {
GridLayout g=new GridLayout(3,2);
setLayout(g);
add(new JLabel("1",JLabel.CENTER));
add(new JLabel("2",JLabel.CENTER));
add(new JLabel("3",JLabel.CENTER));
add(new JLabel("4",JLabel.CENTER));
add(new JLabel("5",JLabel.CENTER));
add(new JLabel("6",JLabel.CENTER));
}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, new Summary_Graph_JPanel1());
}
}
我在 Java 中创建了一个 GridLayout(3,2)
并插入了 6 个 JLabel
组件。它们应该按照代码编写的顺序插入,但它们是按降序排列的。为什么?
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Summary_Graph_JPanel1 extends JPanel {
public Summary_Graph_JPanel1() {
GridLayout g=new GridLayout(3,2);
setLayout(g);
add(new JLabel("1"),JLabel.CENTER);
add(new JLabel("2"),JLabel.CENTER);
add(new JLabel("3"),JLabel.CENTER);
add(new JLabel("4"),JLabel.CENTER);
add(new JLabel("5"),JLabel.CENTER);
add(new JLabel("6"),JLabel.CENTER);
}
}
这是它的样子:
JLabel.CENTER
的使用是在错误的地方。它应该在 JLabel
构造函数中而不是交给 add(JLabel, constraint)
方法。这不是布局的适当约束,而是标签的约束。
import java.awt.GridLayout;
import javax.swing.*;
public class Summary_Graph_JPanel1 extends JPanel {
public Summary_Graph_JPanel1() {
GridLayout g=new GridLayout(3,2);
setLayout(g);
add(new JLabel("1",JLabel.CENTER));
add(new JLabel("2",JLabel.CENTER));
add(new JLabel("3",JLabel.CENTER));
add(new JLabel("4",JLabel.CENTER));
add(new JLabel("5",JLabel.CENTER));
add(new JLabel("6",JLabel.CENTER));
}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, new Summary_Graph_JPanel1());
}
}