Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Calendar, Как можно сделать календарь? 
:(
    Опции темы
KISha
Дата 27.5.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 31.12.2007

Репутация: нет
Всего: нет



Народ помогите!!!  smile 
Как можно сделать календарь с помощью JTable?
у меня ни как не получается.  smile   smile  smile 

 Например я хочу что бы сделать такой календарь (JTable)

      27 май 2008

_______________________
 пон втр срд чет птн суб вос
_______________________
                       1     2    3    4 
_______________________
   5     6     7    8     9  10  11 
_______________________
 12   13   14  15   16  17  18
_______________________
 19   20   21  22   23  24  25
___+---+________________
 26  |27| 28   29   30  31
___+---+________________
 smile 
PM MAIL   Вверх
Старовъръ
Дата 28.5.2008, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: нет
Всего: 10



Что конкретно не получается??? Вот вывод календаря на консоль. Измени его, чтоб значения заносились или в коллекцию какую, или сразу в таблицу заносились.
Код

GregorianCalendar cal = new GregorianCalendar();
        int today = cal.get(Calendar.DAY_OF_MONTH);
        int month = cal.get(Calendar.MONTH);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        
        System.out.println("Mon Tue Wed Tue Fri Sat Sun\n");
        for(int i = Calendar.MONDAY;i<cal.get(Calendar.DAY_OF_WEEK);i++)
        {
            System.out.print("    ");
        }
        do
        {
            System.out.printf("%3d",cal.get(Calendar.DAY_OF_MONTH));
            
            if((cal.get(Calendar.DAY_OF_MONTH)) == today)
                System.out.print("*");
            else
                System.out.print(" ");
            if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
                System.out.println();
            cal.add(Calendar.DAY_OF_MONTH, 1);
        }
        while((cal.get(Calendar.MONTH))== month);

PM MAIL WWW   Вверх
Maksym
Дата 28.5.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: нет
Всего: 62



Старовъръ
По моему речь о Swing'e:
Цитата(KISha @  27.5.2008,  21:47 Найти цитируемый пост)
с помощью JTable?


KISha
Нужно написать свой? Ведь проще найти готовый, наверняка реализован уже не один десяток..
PM MAIL   Вверх
Orange
Дата 28.5.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 6.9.2004
Где: Russia, Moscow

Репутация: 1
Всего: 5



Вот нашёл у себя в архивах симпатичный календарь:
Код

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



public class Cal extends JPanel {

  protected int yy;
  protected int mm, dd;
  protected JButton labs[][];
  protected int leadGap = 0;

 
  Calendar calendar = new GregorianCalendar();

 
  protected final int thisYear = calendar.get(Calendar.YEAR);
  protected final int thisMonth = calendar.get(Calendar.MONTH);
  
  private JButton b0;
 
  private JComboBox monthChoice;
  private JComboBox yearChoice;

 
  Cal() {
    super();
    setYYMMDD(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
        calendar.get(Calendar.DAY_OF_MONTH));
    buildGUI();
    recompute();
  }



  private void setYYMMDD(int year, int month, int today) {
    yy = year;
    mm = month;
    dd = today;
  }

  String[] months = { "January", "February", "March", "April", "May", "June",
      "July", "August", "September", "October", "November", "December" };

 
  private void buildGUI() {

    setBorder(BorderFactory.createEtchedBorder());
    setLayout(new BorderLayout());

    JPanel tp = new JPanel();
    tp.add(monthChoice = new JComboBox());

    for (int i = 0; i < months.length; i++)
      monthChoice.addItem(months[i]);

    monthChoice.setSelectedItem(months[mm]);
    monthChoice.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        int i = monthChoice.getSelectedIndex();
        if (i >= 0) {
          mm = i;
          System.out.println("Month=" + mm);
          recompute();
        }
      }
    });


    tp.add(yearChoice = new JComboBox());
    yearChoice.setEditable(true);

    for (int i = yy - 5; i < yy + 5; i++)
      yearChoice.addItem(Integer.toString(i));
    yearChoice.setSelectedItem(Integer.toString(yy));
    yearChoice.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        int i = yearChoice.getSelectedIndex();
        if (i >= 0) {
          yy = Integer.parseInt(yearChoice.getSelectedItem()
              .toString());
          System.out.println("Year=" + yy);
          recompute();
        }
      }
    });
    add(BorderLayout.CENTER, tp);

    JPanel bp = new JPanel();
    bp.setLayout(new GridLayout(7, 7));
    labs = new JButton[6][7];

    bp.add(b0 = new JButton("S"));
    bp.add(new JButton("M"));
    bp.add(new JButton("T"));
    bp.add(new JButton("W"));
    bp.add(new JButton("R"));
    bp.add(new JButton("F"));
    bp.add(new JButton("S"));

    ActionListener dateSetter = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String num = e.getActionCommand();
        System.out.println("Num is: "+num);
        if (!num.equals("")) {
           setDayActive(Integer.parseInt(num));
        }
      }
    };


    for (int i = 0; i < 6; i++)
      for (int j = 0; j < 7; j++) {
        bp.add(labs[i][j] = new JButton(""));
        labs[i][j].addActionListener(dateSetter);
      }

    add(BorderLayout.SOUTH, bp);
  }

  public final static int dom[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };


  protected void recompute() {
     System.out.println("recompute: " + yy + ":" + mm + ":" + dd);
    if (mm < 0 || mm > 11)
      throw new IllegalArgumentException("Month " + mm
          + " bad, must be 0-11");
    clearDayActive();
    calendar = new GregorianCalendar(yy, mm, dd);


    leadGap = new GregorianCalendar(yy, mm, 1).get(Calendar.DAY_OF_WEEK) - 1;


    int daysInMonth = dom[mm];
    if (isLeap(calendar.get(Calendar.YEAR)) && mm > 1)
      ++daysInMonth;


    for (int i = 0; i < leadGap; i++) {
      labs[0][i].setText("");
    }


    for (int i = 1; i <= daysInMonth; i++) {
      JButton b = labs[(leadGap + i - 1) / 7][(leadGap + i - 1) % 7];
      b.setText(Integer.toString(i));
    }


    for (int i = leadGap + 1 + daysInMonth; i < 6 * 7; i++) {
      labs[(i) / 7][(i) % 7].setText("");
    }


    if (thisYear == yy && mm == thisMonth)
      setDayActive(dd);

    repaint();
  }


  public boolean isLeap(int year) {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
      return true;
    return false;
  }


  public void setDate(int yy, int mm, int dd) {
     System.out.println("setDate");
    this.yy = yy;
    this.mm = mm;
    this.dd = dd;
    recompute();
  }


  private void clearDayActive() {
    JButton b;


    if (activeDay > 0) {
      b = labs[(leadGap + activeDay - 1) / 7][(leadGap + activeDay - 1) % 7];
      b.setBackground(b0.getBackground());
      b.repaint();
      activeDay = -1;
    }
  }

  private int activeDay = -1;


  public void setDayActive(int newDay) {

    clearDayActive();


    if (newDay <= 0)
      dd = new GregorianCalendar().get(Calendar.DAY_OF_MONTH);
    else
      dd = newDay;

    Component square = labs[(leadGap + newDay - 1) / 7][(leadGap + newDay - 1) % 7];
    square.setBackground(Color.red);
    square.repaint();
    activeDay = newDay;
  }


  public static void main(String[] av) {
    JFrame f = new JFrame("Cal");
    Container c = f.getContentPane();
    c.setLayout(new FlowLayout());

    c.add(new Cal());

    f.pack();
    f.setVisible(true);
  }
}

--------------------
Пару дней назад я познакомился с мальчиком......
PM MAIL ICQ   Вверх
Старовъръ
Дата 28.5.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: нет
Всего: 10



Небольшая поправочка:
Код

public static void main(String[] av) {
    JFrame f = new JFrame("Cal");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//!!!
    Container c = f.getContentPane();
    c.setLayout(new FlowLayout());
    c.add(new Cal());
    f.pack();
    f.setVisible(true);
  }

PM MAIL WWW   Вверх
dorogoyIV
Дата 28.5.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(KISha @  27.5.2008,  22:47 Найти цитируемый пост)
Как можно сделать календарь с помощью JTable?у меня ни как не получается.        

а что не получается то?

Цитата(Maksym @  28.5.2008,  10:18 Найти цитируемый пост)
Нужно написать свой? Ведь проще найти готовый, наверняка реализован уже не один десяток..

"чисто для себя" полезно будет потренироваться  smile 

PM MAIL   Вверх
vzf
Дата 6.6.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: нет
Всего: 5



Если нужен готовый, то вот хороший вариант. И исходники есть, чтоб разобраться как работает:


--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
cube
Дата 11.6.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 1
Всего: 3



Цитата(dorogoyIV @ 28.5.2008,  14:54)
Цитата(Maksym @  28.5.2008,  10:18 Найти цитируемый пост)
Нужно написать свой? Ведь проще найти готовый, наверняка реализован уже не один десяток..

"чисто для себя" полезно будет потренироваться  smile

Да не только потренироваться... Я писал когда-то, но не найду где(( В моем можно было промежуток задавать, или выделять несколько отдельных дат и еще промежуток, и все это только в одном календаре...)) - чудо просто))

Пиши сам, если будут вопросы - обращайся, но только по конкретней, что именно не получается??
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.