私は、各日付がJTextAreaで表されるカレンダーを作成しています。私は与えられた月のカレンダーのすべての日付のJTextAreasの配列を作成しました。MouseListenerで配列のインデックスを取得する方法は?
これは私がセルをクリックして、テキストを設定することができるようにしたいCalenderFrameクラス
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.Border;
public class CalendarFrame extends JFrame{
private static final int FRAME_HEIGHT = 700;
private static final int FRAME_WIDTH = 700;
private static final int NUM_OF_CELLS = 35;
private static final int DIM_OF_CELLS = 3;
private JLabel month;
private JPanel panel;
private CellBox[] allCells;
String text = "";
public CalendarFrame(){
month = new JLabel("October");
add(month, BorderLayout.CENTER);
class CellListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
text = JOptionPane.showInputDialog("Set text for date: ");
System.out.println(text);
allCells[].get.setText(text);
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
CellListener listener = new CellListener();
createCellsPanel();
for(int k= 0; k < NUM_OF_CELLS; k++){
allCells[k].getCell().addMouseListener(listener);
}
setSize(FRAME_WIDTH, FRAME_HEIGHT);
}
public CellBox[] createAllCells(int numOfCells){
CellBox[] cells = new CellBox[numOfCells];
for(int i = 0; i < NUM_OF_CELLS; i++){
cells[i].createCell(new JTextArea(DIM_OF_CELLS, DIM_OF_CELLS));
Border border = BorderFactory.createLineBorder(Color.BLACK);
cells[i].getCell().setBorder(BorderFactory.createCompoundBorder(border, BorderFactory.createEmptyBorder(10, 10, 10, 10)));
cells[i].getCell().setEditable(false);
cells[i].setCellNum(i);
}
return cells;
}
public void createCellsPanel(){
allCells = createAllCells(NUM_OF_CELLS);
panel = new JPanel();
panel.setLayout(new GridLayout(5,7));
for(int i = 0; i < NUM_OF_CELLS; i++){
panel.add(allCells[i]);
}
add(panel, BorderLayout.SOUTH);
}
public void popOutEvent(){
}
}
メインクラス
import javax.swing.JFrame;
public class CalendarFrameViewer {
public static void main(String[] args) {
JFrame frame = new CalendarFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
とCellBoxクラス
import javax.swing.JTextArea;
public class CellBox {
private int cellNum;
private int date;
private JTextArea cell;
public void setCellNum(int num){
cellNum = num;
}
public void setDate(int date){
this.date = date;
}
public void createCell(JTextArea cell){
this.cell = cell;
}
public int getCellNum(){
return cellNum;
}
public int getDate(){
return date;
}
public JTextArea getCell(){
return cell;
}
}
ですセル内にある。どのようにして細胞番号またはインデックス番号を取得できますか?
これの[MCVE]を書くことができますか?あなただけのコードスニペットを持っているし、他の多くのコンテキストなしでマウスリスナーについての言葉の束。誰もあなたのコードを実際に試してみたり、あなたが尋ねたり話していることを簡単に見ることはできません。 – pvg