2

カレンダーを表示しようとしていましたが、右のボタンをクリックすると、そのボタンの色を変更したいと思います。実際にはポップアップ メニューに移動しますが、どのボタンが最初にクリックされたかをどのように知ることができますか?

panel1date.setLayout(new GridLayout(6,7));
for(int i=0; i<btnArr.length;i++){
    btnArr[i] = new Button("");
    btnArr[i].addMouseListener(new MemoHandler());

    panel1date.add(btnArr[i]);
}

btnPrevMon.addActionListener(new BtnEventHandler());
btnNextMon.addActionListener(new BtnEventHandler());


void setDays(Calendar date){
    int year = date.get(Calendar.YEAR);
    int month = date.get(Calendar.MONTH);
    lblYearMon.setText(year+"year+"+(month+1)+"month");
    Calendar sDay = Calendar.getInstance();
    sDay.set(year, month, 1);
    sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK)+1);
    for(int i=0; i<btnArr.length; i++, sDay.add(Calendar.DATE, 1)){
        int day = sDay.get(Calendar.DATE);
        btnArr[i].setLabel(day+"");
        if(sDay.get(Calendar.MONTH)!=month) {
            btnArr[i].setBackground(Color.lightGray);
        } 
        else {
            btnArr[i].setBackground(Color.white);
        }
    }
}

class BtnEventHandler implements ActionListener{

    public void actionPerformed(ActionEvent ae) {
        String msg = tf1.getText();
        Button src = (Button)ae.getSource();
        if(src==btnPrevMon) {
            curMon.add(Calendar.MONTH, -1);
        }
        else
            if(src==btnNextMon) {
                curMon.add(Calendar.MONTH, 1);
                setDays(curMon);
                repaint();
            }
    }

    class EventHandler extends FocusAdapter implements ActionListener {
        public void actionPerformed(ActionEvent ae) {
            String msg = tf1.getText();
            if("".equals(msg))
                return;
            if(dataOut!=null) {
                try {
                    dataOut.writeUTF(nickname+">"+msg);
                }
                catch(IOException e) {
                }
            }
            ta1.append("\r\n" + nickname +">"+ msg);
            tf1.setText("");
        }
    }

    class MemoHandler extends MouseAdapter implements MouseListener{

        public void mouseClicked(MouseEvent e){
            if (e.getButton() == MouseEvent.BUTTON1)
                diarymemo = new DiaryButtonMemo(Client.server_ip, Client.server_port);
            if (e.getButton() == MouseEvent.BUTTON3)
                btnArr[].setBackground(Color.RED);
        }

    }

    public static void main(String[] args) {
        DiaryClient di = new DiaryClient();
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }
}
4

1 に答える 1

1

ボタンの色を変更するには、次を使用します。

Color background;
button.setBackground(background);

ポップアップ メニューを表示するには:

public class PopupMenu extends JPanel {
  JPopupMenu popup;

  public PopupMenu() {
    popup = new JPopupMenu();
    JMenuItem item;
    popup.add(item = new JMenuItem("Popup"));
    item.addActionListener(new new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        // Action performed
        System.out.println("I know which popup menu item ["
          + event.getActionCommand() +
          "] was pressed.");
      });
    });

    addMouseListener(new MouseListener() {
      public void mousePressed(MouseEvent e) {
        doPopup(e);
      }

      public void mouseClicked(MouseEvent e) {
        doPopup(e);
      }

      public void mouseReleased(MouseEvent e) {
        doPopup(e);
      }

      private void doPopup(MouseEvent e) {
        if (e.isPopupTrigger()) {
          popup.show(PopupMenu.this, e.getX(), e.getY());
        }
      }
    });
  }
}
于 2012-11-27T13:29:10.103 に答える