想问一下java如何在日历系统里插入图片

大二做课设风景日历系统,做了半天也不会插入图片,更何况图片还要可供选择,求助各位大佬

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

public class MyCalendar extends JApplet {
public static final String WEEK_SUN = "星期日";       
public static final String WEEK_MON = "星期一";
public static final String WEEK_TUE = "星期二";
public static final String WEEK_WED = "星期三";
public static final String WEEK_THU = "星期四";
public static final String WEEK_FRI = "星期五";
public static final String WEEK_SAT = "星期六";

public static final Color background = Color.white; 
public static final Color foreground = Color.black;         
public static final Color headerBackground = Color.blue;     
public static final Color headerForeground = Color.white;    
public static final Color selectedBackground = Color.green;   
public static final Color selectedForeground = Color.white;  

private JPanel cPane;           
private JLabel yearsLabel;      
private JSpinner yearsSpinner;  
private JLabel monthsLabel;     
private JComboBox monthsComboBox;
private JTable daysTable;        
private AbstractTableModel daysModel;
private Calendar calendar;       
//函数定义
public MyCalendar() {  
    cPane = (JPanel) getContentPane();
}
public void init() { 
    cPane.setLayout(new BorderLayout());

    calendar = Calendar.getInstance();
    yearsLabel = new JLabel("年份: ");
    yearsSpinner = new JSpinner();
    yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"));
    yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR)));

    yearsSpinner.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent changeEvent) {
                int day = calendar.get(Calendar.DAY_OF_MONTH);
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue());
                int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);
                updateView();
            }
        });

    JPanel yearMonthPanel = new JPanel();
    cPane.add(yearMonthPanel, BorderLayout.NORTH
    yearMonthPanel.setLayout(new BorderLayout());式
    yearMonthPanel.add(new JPanel(), BorderLayout.CENTER)
    JPanel yearPanel = new JPanel();
    yearMonthPanel.add(yearPanel, BorderLayout.WEST);
    yearPanel.setLayout(new BorderLayout());
    yearPanel.add(yearsLabel, BorderLayout.WEST);
    yearPanel.add(yearsSpinner, BorderLayout.CENTER);

    monthsLabel = new JLabel("月份: "); 
    monthsComboBox = new JComboBox(); 
    for (int i = 1; i <= 12; i++) { 
        monthsComboBox.addItem(new Integer(i));
    }
    monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));
    monthsComboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                int day = calendar.get(Calendar.DAY_OF_MONTH);
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex());
                int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);
                updateView();
            }
        });
    JPanel monthPanel = new JPanel();
    yearMonthPanel.add(monthPanel, BorderLayout.EAST);
    monthPanel.setLayout(new BorderLayout());
    monthPanel.add(monthsLabel, BorderLayout.WEST);
    monthPanel.add(monthsComboBox, BorderLayout.CENTER);

    daysModel = new AbstractTableModel() {   
            public int getRowCount() {        
                return 7;
            }

            public int getColumnCount() {     
                return 7;
            }

            public Object getValueAt(int row, int column) {
                if (row == 0) { 
                    return getHeader(column);
                }
                row--;
                Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1;
                int index = row * 7 + column;
                int dayIndex = index - moreDayCount + 1;
                if (index < moreDayCount || dayIndex > dayCount) {
                    return null;
                } else {
                    return new Integer(dayIndex);
                }
            }
        };

    daysTable = new CalendarTable(daysModel, calendar);
    daysTable.setCellSelectionEnabled(true);
    daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                                                           boolean hasFocus, int row, int column) {
                String text = (value == null) ? "" : value.toString();
                JLabel cell = new JLabel(text);
                cell.setOpaque(true);//
                if (row == 0) {
                    cell.setForeground(headerForeground);
                    cell.setBackground(headerBackground);
                } else {
                    if (isSelected) {
                        cell.setForeground(selectedForeground);
                        cell.setBackground(selectedBackground);
                    } else { 
                        cell.setForeground(foreground);
                        cell.setBackground(background);
                    }
                }

                return cell;
            }
        });
    updateView();

    cPane.add(daysTable, BorderLayout.CENTER);
}

public static String getHeader(int index) {
    switch (index) {
    case 0:
        return WEEK_SUN;
    case 1:
        return WEEK_MON;
    case 2:
        return WEEK_TUE;
    case 3:
        return WEEK_WED;
    case 4:
        return WEEK_THU;
    case 5:
        return WEEK_FRI;
    case 6:
        return WEEK_SAT;
    default:
        return null;
    }
}

public void updateView() {//更新面板显示方法
    daysModel.fireTableDataChanged();
    daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),
                                      calendar.get(Calendar.WEEK_OF_MONTH));
    daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1,
                                         calendar.get(Calendar.DAY_OF_WEEK) - 1);
}
//
public static class CalendarTable extends JTable {
    private Calendar calendar;
    public CalendarTable(TableModel model, Calendar calendar) {//
        super(model);
        this.calendar = calendar;
    }
    public void changeSelection(int row, int column, boolean toggle, boolean extend) {//选择表格单元格时
        super.changeSelection(row, column, toggle, extend);
            return;
        }
        Object obj = getValueAt(row, column);
        if (obj != null) {
            calendar.set(Calendar.DAY_OF_MONTH, ((Integer)obj).intValue());
        }
    }
}

public static void main(String[] args) {
    JFrame frame = new JFrame("Calendar Application");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MyCalendar myCalendar = new MyCalendar();
    myCalendar.init();
    frame.getContentPane().add(myCalendar);
    frame.setSize(400, 300);
    frame.show();
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问