現在パネルにカレンダーを作る事をしているのですが、
一応出力はできているのですがよく分からない月からしか出力されませんどこを直せばいいでしょうか?
お願いいたします。
~~ Kenkou.java ~~
pane6 = new JPanel();////////////////////////////////////////////////////// pane6.setBackground(new Color(176, 196, 222)); contentPane.add(pane6, "カレンダー"); JButton pane6bt1 = new JButton("ホームへ"); pane6bt1.setBounds(0, 435, 135, 39); pane6bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pane1.setVisible(true);//タイトル pane2.setVisible(false);//体重 pane3.setVisible(false);//記録 pane4.setVisible(false);//グラフ pane5.setVisible(false);//一覧 pane6.setVisible(false);//日程 pane7.setVisible(false); pane8.setVisible(false); } }); pane6.setLayout(null); pane6.add(pane6bt1); pane6lb1 = new JLabel("カレンダー"); pane6lb1.setBounds(194, 0, 325, 66); pane6lb1.setHorizontalAlignment(SwingConstants.CENTER); pane6lb1.setFont(new Font("MS UI Gothic", Font.PLAIN, 32)); pane6.add(pane6lb1); paneAAA = new JPanel(); paneAAA.setBounds(12, 76, 702, 356); pane6.add(paneAAA); paneAAA.setLayout(new BorderLayout(0, 0)); ///////////////////////////////////////////////////////////////// Calendar c = Calendar.getInstance(); c.setTime(new Date());
// paneAAA1 = new Month(2015,11); //2016,0 が一月
// paneAAA1.setBackground(new Color(240, 230, 140));
// paneAAA.add(pane2, "name_2");
JButton pane6bt2 = new JButton("→"); pane6bt2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (j<11){ j++; paneAAA1.setMonth1(i,j); //月入れる p = 1; p +=j; //pane2.setToolTipText(i+"年"+p+"月"); ////pane6lb1.setText(i+"年"+p+"月"); }else{ i++; j=0; paneAAA1.setMonth1(i,j); //月入れる p = 1; p +=j; //pane2.setToolTipText(i+"年"+p+"月"); ////pane6lb1.setText(i+"年"+p+"月"); return; } } }); pane6bt2.setBackground(new Color(175, 238, 238)); paneAAA.add(pane6bt2, BorderLayout.EAST); JButton pane6bt3 = new JButton("←"); pane6bt3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (j>0){ j--; paneAAA1.setMonth1(i,j); //月入れる p = 1; p +=j; ////pane6lb1.setText(i+"年"+p+"月"); }else{ i--; j=11; paneAAA1.setMonth1(i,j); //月入れる p = 1; p +=j; ////pane6lb1.setText(i+"年"+p+"月"); return; } } }); pane6bt3.setBackground(new Color(175, 238, 238)); paneAAA.add(pane6bt3, BorderLayout.WEST); paneAAA1 = new Month(2015,11);//paneAAA1 = new JPanel(); paneAAA1.setBackground(Color.WHITE); paneAAA.add(paneAAA1, BorderLayout.CENTER); pane7 = new JPanel();////////////////////////////////////////////////////// pane7.setBackground(new Color(176, 196, 222)); contentPane.add(pane7, "標準"); pane7.setLayout(null); JButton pane7bt1 = new JButton("戻る"); pane7bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pane1.setVisible(false);//タイトル pane2.setVisible(true);//体重 pane3.setVisible(false);//記録 pane4.setVisible(false);//グラフ pane5.setVisible(false);//一覧 pane6.setVisible(false);//日程 pane7.setVisible(false); pane8.setVisible(false); text3.setText(null); pane7lb3.setText("あなたの標準体重は・・・"); } }); pane7bt1.setBounds(0, 427, 135, 47); pane7.add(pane7bt1);
~~ Month.java ~~~
package kenkou;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Calendar;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Month extends JPanel { //JPanelを継承 ※Pane2の内容↓
JLabel la[][] = new JLabel[7][7]; //JLabelの2次元配列 String data[][] = new String[7][7]; //Stringの2次元配列 //JButton bt[][] = new JButton[7][7]; JLabel b[][] = new JLabel[7][7]; CalendarModel cm;
//int year1;
//int month1;
public Month(int year, int month) { //コンストラクタはクラス名と同じにする setLayout(new GridLayout(7, 7, 0, 0)); // 7行7列 Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR)+1; month = calendar.get(Calendar.MONTH)+1; for(int i = 0; i < 7; i++){ //2重ループ for(int j = 0; j < 7; j++){ b[i][j] = new JLabel(); //b[i][j] = new JLabel(); add(b[i][j]); //add(b[i][j]); b[i][j].setText(""+i+j); b[i][j].setFont(new Font("MSゴシック",Font.ITALIC,28)); //MSゴシック if(0 ==i){ b[i][j].setFont(new Font("MSゴシック",Font.BOLD,28)); } if(0 == j){ b[i][j].setForeground(Color.RED);//日曜 } if(6 == j){ b[i][j].setForeground(Color.BLUE);//土曜 } } } //year=2016; month+=1; cm = new CalendarModel(year,month); data = cm.getData(); int s=2016; int a=1; setToolTipText(s+"年"+a+"月"); for(int i = 0; i < 7; i++){ for(int j = 0; j < 7; j++){ b[i][j].setText(data[i][j]); } } } public void setMonth1(int year, int month) { //次の月 cm.setCalendar(year, month);//setCalendar data = cm.getData(); for(int i = 0; i < 7; i++){ //2重ループ for(int j = 0; j < 7; j++){ b[i][j].setText(data[i][j]); } } } public void setMonth2(int year1, int month1) { //前の月 cm.setCalendar(year1, month1);//setCalendar data = cm.getData(); for(int i = 0; i < 7; i++){ //2重ループ for(int j = 0; j < 7; j++){ b[i][j].setText(data[i][j]); } } } public String[][] getData() { return data; } }
~~ CalendarModel.java ~~
package kenkou;
import java.util.Calendar;
import java.util.Date;
class CalendarModel {
private String[] columnNames = {"日", "月", "火", "水", "木", "金", "土"};
private Calendar c = Calendar.getInstance();
private String[][] data;//String
private int startDay;
private int endDay;
Date date; CalendarModel(int year ,int month) { this.setCalendar(year, month); } public String[] getColumnNames(){ return columnNames; } public String[][] getData() { return data; } public void setCalendar(int year, int month){///////////////////////setCalendar //Calendar c = Calendar.getInstance(); //c.setTime(new Date()); data = new String[7][7]; for(int i = 0; i < columnNames.length ; i++){ data[0][i] = String.format("%2s", columnNames[i]); System.out.print(data[0][i]); } System.out.println(""); c.set(year, month,1); startDay = c.get(Calendar.DAY_OF_WEEK); c.add(Calendar.MONTH, 1); c.add(Calendar.DATE, -1); endDay = c.get(Calendar.DATE); int row = 1; int column = startDay - 1; for (int date = 1; date <= endDay; date++) { data[row][column] = String.format("%3s", String.valueOf(date)); if (column == 6) { row++; column = 0; } else { column++; } System.out.print(date + " "); if(date == 7 || date == 14 || date == 21 || date == 28){ System.out.println(""); } } }
}
回答3件
あなたの回答
tips
プレビュー