質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.33%

  • Java

    10505questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Swing

    187questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Swing ボタン押下で画面を遷移させたい。

受付中

回答 0

投稿 2017/11/26 15:14

  • 評価
  • クリップ 1
  • VIEW 45

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中身
}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • ngsvx

    2017/11/27 16:23

    最低でもコンパイルが通るコードで質問をしてください。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.33%

関連した質問

  • 解決済

    ボタンを動的に作る方法

    ブックマークを管理するGUIアプリをSwingで作ろうとしています。 まずJsonで管理しようと思いJsonにサイト情報を追加するコードを作りました。 それからGUI部分を作ろうと

  • 解決済

    Swing じゃんけんゲーム

    swingを用いてじゃんけんゲームを作っています。 以前質問させていただいたKeyEventはわかったのですが、それをプログラムになおすときにどのように繋げたらいいのかわかりません

  • 解決済

    レイアウトなど

    アプレットを使ってプログラムを組んでいます。 コード public class APPLET extends Applet{          public void init(

  • 解決済

    レイアウト

    先ほどの質問の続きになります。 コード public class APPLET extends Applet{              public void init(){

  • 解決済

    ボタンに表示されるフォントを設定について

    JButtonにフォントを設定する場合、下ので出来ますが   JButton button = new JButton("ボタン");   button.setFont(new 

  • 解決済

    JButtonでボタンを制作し、画面の大きさを切り替えると位置が変わってしまう

    前回の質問時にはコマンドラインでの電卓を作っていましたが、現在ではswingを使った電卓の制作に挑戦しています。 JButtonでボタンを作り、親パネルに貼り付けているのですが、

  • 解決済

    国旗を表示させたい(続き)

    前提・実現したいこと btn [0][1][2]をクリックすると、それに対応した国旗が表示されるようにしたい。 ソースコード import java.awt.*;   

  • 受付中

    [java]TextFieldの中身を引数として持ってくる場合

    [java]TextFieldの中身を引数として持ってくる場合どうしたらよいですか? TextFieldに書かれた文字をボタンが押されたら一時的に保存されるという風にしたいのです

同じタグがついた質問を見る

  • Java

    10505questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Swing

    187questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。