JFrame'imde 3 farklı panelim var ve paneller içindeki düğmelerin metnini değiştiren bir yöntem çağırdığımda 1. ve 3. panelimi güncellemeye çalışıyorum. (3. panelin (panel) içinde, 7 x 7 ızgarada 49 düğme vardır)Bir JFrame içinde JPanels'i yeniliyor
İlk panelde (panel1) yalnızca metni güncellemeye çalıştığım 1 jbutton var ama bu da çalışmıyor.
public void update() {
for (int c=0; c< Board.COLS; c++) {
for (int r=0; r< Board.ROWS; r++) {
JButton b = (JButton) panel.getComponent(r*7+c);
b.setOpaque(true);
b.setFocusable(false);
b.setPreferredSize(new Dimension(220,220));
b.setFont(b.getFont().deriveFont(Font.BOLD, b.getFont().getSize()*6));
b.setText("" + board.map[c][r].getType());
panel.add(b);
}
}
JButton extra = (JButton) (panel1.getComponent(0));
extra.setPreferredSize(new Dimension(200,100));
extra.setFont(extra.getFont().deriveFont(Font.BOLD, extra.getFont().getSize()*6));
extra.setText("" + board.oldTile.getType());
panel1.add(extra);
panel.repaint();
panel1.repaint();
}`
Burada sahip olduğum şey, JFrame'im üzerinde bir miktar canlandırıcı oluyor, ancak her yere gidiyor. Değerler olması gereken yerde değildir ve bazen JButtonlar boştur. Sorunun paneldeki belirli düğmeyi aldığını düşünüyorum ve bunu nasıl yapacağımı bilmiyorum.
Sorununuzu tam olarak anlayabilmemiz ve size yardımcı olabilmek için gerçekten bir [mcve] oluşturup göndermeniz gerekiyor. Bu sizin tam programınız değil, programınızın küçük bir alt kümesidir, sizin için sorununuzu derler, çalıştırır ve gösterir. "Küçük" anahtar kelimesine dikkat edin. Bu kullanışlı araç hakkında daha fazla bilgi için lütfen [mcve] bağlantısına bakın. –
Bu tür bir kodun beni endişelendirdiğini unutmayın: 'panel.getComponent (r * 7 + c);' gibi çok mantıklı olan program mantığınızı sürdürebilmek için görünümden yapısal kod kullanmaya çalışıyorsunuz gibi görünüyor. yapılacak şey. –
Güncelleştirme() yalnızca varolan düğmelerin metnini değiştirmesi gerektiğini söylediğinizde yeni düğmeler eklemeyi sürdürüyor? – FredK