⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablepanel.java

📁 通讯采集软件
💻 JAVA
字号:
package collector.gui.guiVo.ChooseDate;

import java.util.*;

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

public class TablePanel
    extends javax.swing.JPanel {

  DateChooser dateChooser = null;
  private Calendar showMonth = null;
  private Date selectedDate = null;
  private String[] colname = {
      "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
  private String[][] date = new String[7][7];
  private DefaultTableModel model; //默认 表格模型
  private JTable table; //具体显示月历表的 表格

  public TablePanel() {
    jbInit();
  }

  TablePanel(DateChooser dateChooser, Calendar showMonth) {
    this.dateChooser = dateChooser;
    this.showMonth = showMonth;
    makeFace(); //界面制作
    addListener(); //添加事件监听
  }

  private void jbInit() { //GEN-BEGIN:jbInit

    setLayout(new java.awt.BorderLayout());

  } //GEN-END:jbInit

  // Variables declaration - do not modify//GEN-BEGIN:variables
  // End of variables declaration//GEN-END:variables

  private void makeFace() {

    //添加星期文字------------------------//
    date[0][0] = "日";
    date[0][1] = "一";
    date[0][2] = "二";
    date[0][3] = "三";
    date[0][4] = "四";
    date[0][5] = "五";
    date[0][6] = "六";

    //构建 Table -------------------------//

    table = new JTable(model = new DefaultTableModel(date, colname) {
      public boolean isCellEditable(int rowIndex, int mColIndex) {
        return false;
      }
    });

    //设置固定字体,以免调用环境改变影响界面美观
    table.setFont(new Font("宋体", Font.PLAIN, 12));

    //table 表现器构造--------------------//

    DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
      public Component getTableCellRendererComponent(JTable table,
          Object value, boolean isSelected, boolean hasFocus,
          int row, int column) {

        //单元格文字右对齐
        setHorizontalAlignment(JLabel.RIGHT);

        //设置 背景 颜色-----------//
        if (row == 0) { //星期文字行背景色
          setBackground(Pallet.backGroundColor);
        }
        else if ( ("" + new GregorianCalendar().get(Calendar.DAY_OF_MONTH))
                 .equals(date[row][column])) {
          setBackground(Pallet.todayBackColor); //今天格背景色
        }
        else {
          setBackground(Pallet.palletTableColor); //普通格背景色

          //设置 前景 颜色-----------//
        }
        if ( (column == 0 && row != 0) || (column == 6 && row != 0)) {
          setForeground(Pallet.weekendFontColor); //周末格字体色
        }
        else if (row != 0 && column != 0 && column != 6) {
          setForeground(Pallet.dateFontColor); //普通格字体色
        }
        else {
          setForeground(Pallet.weekFontColor); //星期文字格字体色

        }
        return super.getTableCellRendererComponent(table, value,
            isSelected, hasFocus, row, column);

      }
    };

    //设置列表现器------------------------//

    for (int i = 0; i < colname.length; i++) {
      table.getColumn(colname[i]).setCellRenderer(tcr);
    }

    //table 配置--------------------------//

    table.setShowHorizontalLines(false);
    table.setShowVerticalLines(false);

    table.setRowSelectionAllowed(false);
    table.setColumnSelectionAllowed(false);

    table.setIntercellSpacing(new Dimension(0, 0));

    //设置月历表数值----------------------//

    setMonth(showMonth);

    //总体布局---------------------------//
    setLayout(new BorderLayout());
    add(table, BorderLayout.CENTER);
  }

  /**
   * 方法:添加事件监听
   */
  private void addListener() {
    table.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {

        //双击表单元格,保存有意义的 Date
        if (e.getClickCount() == 2) {
          int selectedRow = table.getSelectedRow();
          int selectedColumn = table.getSelectedColumn();

          if (selectedRow > 0 &&
              !date[selectedRow][selectedColumn].equals("")) {

            showMonth.set(Calendar.DAY_OF_MONTH, Integer.valueOf(
                date[selectedRow][selectedColumn]).intValue());

            selectedDate = showMonth.getTime();

            dateChooser.hideChooser();
          }
        } //end if
      }
    });
  }

  /**
   * 方法:设置月历的显示月份1
   *
   * @param showMonth java.util.Calendar
   */
  private void setMonth(Calendar showMonth) {

    this.showMonth = showMonth;

    //月份表取得--------------------------//

    String[][] tmpDate = MonthMaker.makeMonth(showMonth);

    for (int i = 1; i < 7; i++) {
      for (int j = 0; j < 7; j++) {
        date[i][j] = tmpDate[i - 1][j];
        table.setValueAt("" + tmpDate[i - 1][j], i, j);
      }
    }
  }

  /**
   * 方法:设置月历的显示月份2
   *
   * @param year int
   * @param month int
   */
  public void setMonth(int year, int month) {

    showMonth.set(year, month - 1, 1);

    setMonth(showMonth);
  }

  /**
   * 方法:取得选择日期
   */
  public Date getDate() {
    return selectedDate;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -