Как я могу реализовать слушателя, чтобы при нажатии он выделял объект? - PullRequest
1 голос
/ 25 апреля 2020

Моя программа состоит в том, чтобы создать панель с 6 кубиками, которую я могу перебросить. Я хочу иметь возможность выбирать отдельные d ie, щелкая их (и выделенный d ie будет выделен), чтобы они не перебирались. У меня работает панель, но я не могу ее получить, поэтому я могу нажать на объявление ie и выделить ее, чтобы проверить способ сохранения?

package UI;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class DieFrame extends JFrame{
/*
 * instance variables
 */

private DiePanel die1;
private DiePanel die2;
private DiePanel die3;
private DiePanel die4;
private DiePanel die5;
private DiePanel die6;
private JPanel field;
private JPanel menu;

/*
 * constructor
 */
public DieFrame() {
    /*
     * initialize frame properties
     */
    this.setLayout(new FlowLayout());
    this.setSize(800, 300);
    this.setTitle("Farkle Die");

    /*
     * Build Panel
     */
    this.createFieldPanel();
    this.createMenuPanel();

    /*
     * add the field & menu to frame
     */
    this.add(field);
    this.add(menu);

}

//-------------------------------------
// Class Method
//-------------------------------------

//-------------------------------------
// Private Helpers
//------------------------------------- 

/*
 * Build menu panel
 */

private void createMenuPanel() {
    menu = new JPanel();
    menu.setBounds(0, 300, 250, 100);

    //Create button & add listener to it
    JButton rollButton = new JButton("Re-Roll");
    rollButton.setSize(300, 200);
    rollButton.addActionListener(new RollListener());

    //Add button to menu area
    menu.add(rollButton);
}

/*
 * Build field panel
 */
private void createFieldPanel() {
    //set up dice field area
    field = new JPanel();
    field.setBounds(0,0,250,200);

    //create the dice and add them
    die1 = new DiePanel();
    die2 = new DiePanel();
    die3 = new DiePanel();
    die4 = new DiePanel();
    die5 = new DiePanel();
    die6 = new DiePanel();

    field.add(die1);
    field.add(die2);
    field.add(die3);
    field.add(die4);
    field.add(die5);
    field.add(die6);
}

//-------------------------------------
//inner classes
//-------------------------------------

private class RollListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        die1.rollDie();
        die2.rollDie();
        die3.rollDie();
        die4.rollDie();
        die5.rollDie();
        die6.rollDie();

    }
    public void mouseClicked(MouseEvent arg0) {
        die1.this.setBackground(Color.yellow);

    }
}

}
...