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