メッセージのJLabel
を表示された四角形(各四角はJLabel
)のグリッドの下に表示しようとしています。 JPanel
にメッセージを追加しようとしないと、4x12グリッドの格子がうまく表示されます。しかし、メッセージJLabel
をグリッドの下または上に追加しようとすると、グリッドのグリッドが2つに分割され(最初の四角形の後に)、1つの四角形の列が左に表示され、次にそこに表示されますギャップであり、他の3つの四角の列が表示されます。メッセージが下に表示されます。このメッセージを追加すると、正方形のグリッドがこのように分割されるのはなぜですか?私は下に私のコードを入れました。助けをありがとうございました。グリッドの下にメッセージJLabelを追加しようとすると、GridBagLayoutが奇妙なことをする
public void displayGrid(JButton button) {
JLabel instructionsLabel = new JLabel ("Select the locations of the four objects that you saw previously. Be careful - when you select one box, you can't take it back.");
try {
squareImage = ImageIO.read(this.getClass().getResource("stimulus(0).gif"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i = 0; i < 16; i++){
c.gridx = i % 4;
c.gridy = i/4;
squareLabels[i] = new JLabel(new ImageIcon(squareImage));
panel.add(squareLabels[i], c);
squareLabels[i].addMouseListener(this);
}
panel.validate();
c.gridy += 1;
c.gridx = 0;
panel.add(instructionsLabel, c);
panel.validate();
}
GridBagConstraintsを意味しますか?私は同じインスタンスを使用することが全体のアイデアだと思った。 2つの異なるGridBagConstraintsを使用している場合、相互に干渉しないようにすることはできません。 – lb91
'GridBagConstraints'の再利用に問題はありません:https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html – Berger
さて、私はかなり問題があったと確信しています。過去に同じGridBagConstraintsオブジェクトを使用していましたが、私が間違っていると受け入れる意思があります。コード内の同じスレッド上でIOとSwingのモデル操作をきわめて明確にする - SwingWorkerを使用してIOタスクを管理することを検討してください。また、あなたは 'c.gridy = i/4;'を持っています。そこには私のバグのように見えます - これは設計によるものですか? – Lee