私はいくつかのボタンを使ってJavaで推測グリッドゲームを作っています。プログラムはJavaのgridlayoutレイアウトを使用し、ボタンをクリックすると配列にGridLayoutの位置(x &ではなく)を追加します。ここでJavaでJButtonのgridlayoutセルの位置を取得する方法は?
は、セル位置ファインダーが必要とされるコードのストリップです。
public void actionPerformed(ActionEvent e)
{
if(placementLimit < 5){
//placementlimit is limit to buttons clicked
JButton clickedButton = (JButton)e.getSource();
clickedButton.setBackground(Color.RED);
/* something like: int pos = clickedButton.getGridPos
* arrayplacedpositions.add(pos);
*/
placementLimit++;
}
私はそう プロジェクト全体がここにあるのJPanelをしなかった:
/* Guessing game GoldMiner By Alexander Smirnov
* A Computer Game where you hide and place gold.
*/
package standard;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.*;
public class game extends JPanel
{
JButton buttons[] = new JButton[64];
int placementLimit = 0;
ArrayList goldPos = new ArrayList();
public game()
{
setLayout(new GridLayout(8,8));
initializebuttons();
}
public void initializebuttons()
{
for(int i = 0; i <= 63; i++)
{
buttons[i] = new JButton();
buttons[i].setText("");
buttons[i].addActionListener(new buttonListener());
add(buttons[i]);
}
}
private class buttonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(placementLimit < 5){
JButton clickedButton = (JButton)e.getSource();
clickedButton.setIcon(new ImageIcon("/Users/Administrator/Desktop/gold2.jpg"));
clickedButton.setBackground(Color.RED);
JPanel.getComponents();
placementLimit++;
} else {
JOptionPane.showMessageDialog(null, "You have placed the maximum amount of gold!");
}
}
}
public static void main(String[] args)
{
JFrame window = new JFrame("GoldMiner");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().add(new game());
window.setBounds(300,200,300,300);
Container c = window.getContentPane();
window.setVisible(true);
}
}
これが重複していない場合は、あなたの修正されたアプローチを示している[MCVE]が含まれるようにあなたの質問を編集してください。 – trashgod