JPanel CardLayoutを用いて、ボタン押下による画面遷移を実装したい。
class JFrameSample extends JFrame {
public static void main(String[] args) {
JFrameSample JFra = new JFrameSample();
//JFrame設定 JFra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFra.setSize(600, 600); JFra.setLocationRelativeTo(null); JFra.setVisible(true); } JFrameSample() { JPanel DispDate = new JPanel(); DispDate.setLayout(new BorderLayout()); CalApp CalApp = new CalApp(); DispDate.add(CalApp, BorderLayout.CENTER); JPanel DispCal = new JPanel(); DispCal.setLayout(new BorderLayout()); CalApp2 CalApp2 = new CalApp2(); DispCal.add(CalApp2, BorderLayout.CENTER); JPanel Cont = new JPanel(); Cont.setLayout(new CardLayout()); Cont.add(DispDate, "DispDate"); Cont.add(DispCal, "DispCal"); BtnPanel BtnPanel = new BtnPanel(); getContentPane().add(BtnPanel, BorderLayout.NORTH); getContentPane().add(Cont, BorderLayout.CENTER); }
}
//ボタン表示のクラス
class BtnPanel extends JPanel implements ActionListener {
Locale locale = new Locale("ja", "JP", "JP");
Calendar cal = Calendar.getInstance(locale);
JTextField EntDate; JButton SET; JButton Daybtn; JButton Monthbtn; String strYear; String strWaYear; String strMonth; String strDay; String strWeek; BtnPanel() { //ラベル、ボタンの設定 EntDate = new JTextField(12); EntDate.setFont(new Font("MS ゴシック", Font.BOLD, 20)); SET = new JButton("SET"); SET.setFont(new Font("MS ゴシック", Font.BOLD, 20)); SET.setActionCommand("set"); SET.addActionListener(this); Daybtn = new JButton("日"); Daybtn.setFont(new Font("MS ゴシック", Font.BOLD, 20)); Daybtn.addActionListener(this); Daybtn.setActionCommand("DispDate"); Monthbtn = new JButton("月"); Monthbtn.setFont(new Font("MS ゴシック", Font.BOLD, 20)); Monthbtn.addActionListener(this); Monthbtn.setActionCommand("DispCal"); strYear = calYear(cal); String ToCalAppYear = strYear; strWaYear = calWayear(cal); String ToCalAppWaYear = strWaYear; strMonth = calMonth(cal); String ToCalAppMonth = strMonth; strDay = calDay(cal); String ToCalAppDay = strDay; strWeek = calWeek(cal); String ToCalAppWeek = strWeek; //配置 //ボタン JPanel btnP = new JPanel(); btnP.setLayout(new FlowLayout()); btnP.add(EntDate); btnP.add(SET); btnP.add(Daybtn); btnP.add(Monthbtn); this.add(btnP); } public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); if (cmd.equals("set")) { String strDate = EntDate.getText();//yyyy/MM/dd Calendar calDate = parseStrToCal(strDate);//Calendar型に strYear = calYear(calDate);//yyyy年に strWaYear = calWayear(calDate);//(平成yy年)に strDay = calDay(calDate);//MM月に strMonth = calMonth(calDate);//dd日に strWeek = calWeek(calDate);//(曜日)に String strYcut = strYear.substring(0, 3); int intYcut = new Integer(strYcut); String strMcut = strMonth.substring(0, 1); int intMcut = new Integer(strMcut); } else if (cmd.equals("DispDate")) { CardLayout.show(JFrameSample.Cont , cmd); } else if (cmd.equals("DispCal")) { CardLayout.show(JFrameSample.Cont , cmd); } }
class CalApp extends JPanel {
//CalApp中身
}
class CalApp2 extends JPanel {
//CalApp2中身
}
あなたの回答
tips
プレビュー