Java 使用JTextArea的日历

Java 使用JTextArea的日历,java,swing,calendar,jtextarea,Java,Swing,Calendar,Jtextarea,我正在尝试使用JTextArea用java制作约会日历。在任何一天单击鼠标左键都会显示自己的可编辑JTextArea,用于编写约会。我只需要帮我弹出一个新的文本区域,不管是什么“每天”部分。我已经阅读了docs.oracle的内容,到目前为止,我的尝试导致了未知源错误 import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; import java.util.Date; import java.a

我正在尝试使用JTextArea用java制作约会日历。在任何一天单击鼠标左键都会显示自己的可编辑JTextArea,用于编写约会。我只需要帮我弹出一个新的文本区域,不管是什么“每天”部分。我已经阅读了docs.oracle的内容,到目前为止,我的尝试导致了未知源错误

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.BorderLayout;
import javax.swing.*;

@SuppressWarnings("serial")
public class GUICal extends JFrame{
int month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
int year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);;
JLabel l = new JLabel("", JLabel.CENTER);
String day = "";
JDialog d;
JButton[] button = new JButton[49];
static GUICal _gui;
public GUICal() {

    JFrame jpf = new JFrame();
    jpf.setDefaultCloseOperation(EXIT_ON_CLOSE);
    d = new JDialog();
    d.setModal(true);
    String[] header = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
    JPanel p1 = new JPanel(new GridLayout(7, 7));
    p1.setPreferredSize(new Dimension(430, 120));

    for (int x = 0; x < button.length; x++) {
        final int selection = x;
        button[x] = new JButton();
        button[x].setFocusPainted(false);
        button[x].setBackground(Color.green);
        if (x > 6) {
            button[x].addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent ae) {
                    day = button[selection].getActionCommand();
                    switch(ae.getModifiers()) {
                    case InputEvent.BUTTON1_MASK: {//left-clicker

                        break;
                      }
                    case InputEvent.BUTTON3_MASK: {//right-clicker

                      break;
                      }
                    }   
                }
                public void mouseEntered(MouseEvent arg0) {}
                public void mouseExited(MouseEvent arg0) {}
                public void mousePressed(MouseEvent arg0) {}
                public void mouseReleased(MouseEvent arg0) {}
            });

        }

        if (x < 7) {
            button[x].setText(header[x]);
            button[x].setForeground(Color.red);
        }
        p1.add(button[x]);

    }

    JPanel p2 = new JPanel(new GridLayout(1, 3));
    JButton previous = new JButton("<< Prior");
    previous.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            month--;
            displayDate();
        }
    });
    p2.add(previous);
    p2.add(l);
    JButton next = new JButton("Next >>");
    next.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            month++;
            displayDate();
        }
    });
    p2.add(next);
    d.add(p1, BorderLayout.CENTER);
    d.add(p2, BorderLayout.SOUTH);
    d.pack();
    d.setLocationRelativeTo(jpf);
    displayDate();
    d.setVisible(true);
}

public void displayDate() {
    for (int x = 7; x < button.length; x++)
        button[x].setText("");
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
            "MMMM yyyy");
    java.util.Calendar cal = java.util.Calendar.getInstance();
    cal.set(year, month, 1);
    int dayOfWeek = cal.get(java.util.Calendar.DAY_OF_WEEK);
    int daysInMonth = cal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
    for (int x = 6 + dayOfWeek, day = 1; day <= daysInMonth; x++, day++) {
        button[x].setText("" + day);

        d.setTitle(sdf.format(cal.getTime()));
        for (int y = 7; y < button.length; y++) {
            String str = button[x].getText();
            int m = Integer.parseInt(str);
            SimpleDateFormat fm = new SimpleDateFormat("MMMM yyyy");
            String dfm = fm.format(new Date());
            SimpleDateFormat format = new SimpleDateFormat("dd");
            String date = format.format(new Date());

            int n = Integer.parseInt(date);
            if ((m < n) && (dfm.equals(l.getText())))
                button[x].setEnabled(false);

        }
    }
}
public String setPickedDate() {
    if (day.equals(""))
        return day;
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
            "  dd/MM/yyyy   hh:mm:ss");
    java.util.Calendar cal = java.util.Calendar.getInstance();
    cal.set(year, month, Integer.parseInt(day));
    return sdf.format(cal.getTime());
}

public static void main(String[] args) {
_gui = new GUICal();
}
import java.awt.*;
导入java.awt.event.*;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.awt.BorderLayout;
导入javax.swing.*;
@抑制警告(“串行”)
公共类GUICal扩展JFrame{
int month=java.util.Calendar.getInstance().get(java.util.Calendar.month);
int year=java.util.Calendar.getInstance().get(java.util.Calendar.year);;
JLabel l=新JLabel(“,JLabel.CENTER”);
字符串日期=”;
JDialog d;
JButton[]按钮=新JButton[49];
静态图形用户界面;
公共GUICal(){
JFrame jpf=新的JFrame();
jpf.setDefaultCloseOperation(关闭时退出);
d=新JDialog();
d、 setModal(真);
字符串[]头={“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
JPanel p1=新JPanel(新网格布局(7,7));
p1.设置首选尺寸(新尺寸(430120));
用于(int x=0;x6){
按钮[x].addMouseListener(新的MouseListener(){
公共无效mouseClicked(MouseEvent ae){
day=按钮[选择]。getActionCommand();
开关(ae.getModifiers()){
大小写InputEvent.BUTTON1_掩码:{//左点击器
打破
}
大小写InputEvent.BUTTON3\u掩码:{//右击键
打破
}
}   
}
public void mouseEntered(MouseEvent arg0){}
public void mouseExited(MouseEvent arg0){}
public void mousePressed(MouseEvent arg0){}
public void MouseEvent arg0{}
});
}
if(x<7){
按钮[x].setText(标题[x]);
按钮[x]。设置前景(颜色为红色);
}
p1.添加(按钮[x]);
}
JPanel p2=新的JPanel(新的网格布局(1,3));
JButton previous=新JButton(“>”);
next.addActionListener(新ActionListener(){
已执行的公共无效行动(行动事件ae){
月份++;
显示日期();
}
});
p2.添加(下一步);
d、 添加(p1,BorderLayout.CENTER);
d、 添加(p2,南部边界布局);
d、 包装();
d、 setLocationRelativeTo(jpf);
显示日期();
d、 setVisible(真);
}
公开作废显示日期(){
用于(int x=7;x对于(int x=6+dayOfWeek,day=1;day您的问题是什么?我如何使用MouseStener创建JTextArea窗口?仍然不清楚。您的代码有什么问题?为什么使用MouseStener而不是ActionListener?我必须使用右键单击器和滚轮创建一些其他功能,所以我认为MouseStener很容易t、 现在,代码没有鼠标事件。我只是想知道当我在这个特定的实例中左键单击时,是否有一些特殊的技巧使JTextArea弹出。我到目前为止的尝试(包括实例化并在MouseEvent下分配变量)还没有做任何事情。我应该举代码示例吗?您将JTextArea放入JDialog中。您将JDialog显示为MouseListener或ActionListener的一部分。