🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Swing

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

Q&A

解決済

2回答

1675閲覧

【Java】テキストボックスに入力した値の返し方が知りたいです。

jiaetakoga

総合スコア96

Java

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

Swing

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

0グッド

0クリップ

投稿2019/12/29 02:06

編集2019/12/29 05:59

class SelectDateのテキストボックスに入力された値(日付)を
class SeePastの左上に表示させたいと思っています。(現在はaaaを表示させています)
表示のさせ方を教えていただけますと幸いです。
よろしくお願いいたします。

Java

1//SelectDateクラス 2 3package swing_test; 4 5import java.awt.BorderLayout; 6import java.awt.Component; 7import java.awt.EventQueue; 8import java.awt.Window; 9import java.awt.event.ActionEvent; 10import java.awt.event.ActionListener; 11 12import javax.swing.JFrame; 13import javax.swing.JPanel; 14import javax.swing.SwingConstants; 15import javax.swing.SwingUtilities; 16import javax.swing.border.EmptyBorder; 17import javax.swing.JLabel; 18import javax.swing.JTextField; 19import javax.swing.JButton; 20 21public class SelectDate extends JFrame { 22 23 private JPanel contentPane; 24 private JTextField txtDate; 25 26 /** 27 * Launch the application. 28 */ 29 public static void main(String[] args) { 30 EventQueue.invokeLater(new Runnable() { 31 public void run() { 32 try { 33 SelectDate frame = new SelectDate(); 34 frame.setVisible(true); 35 } catch (Exception e) { 36 e.printStackTrace(); 37 } 38 } 39 }); 40 } 41 42 /** 43 * Create the frame. 44 */ 45 public SelectDate() { 46 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 47 setBounds(500, 250, 450, 300); 48 contentPane = new JPanel(); 49 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 50 setContentPane(contentPane); 51 contentPane.setLayout(null); 52 53 JLabel lblDate = new JLabel("日付を選択", SwingConstants.RIGHT); 54 lblDate.setBounds(118, 65, 98, 32); 55 contentPane.add(lblDate); 56 57 txtDate = new JTextField(); 58 txtDate.setBounds(236, 68, 130, 26); 59 contentPane.add(txtDate); 60 txtDate.setColumns(10); 61 //txtDateの値を取り出す 62 String txtdata = txtDate.getText(); 63 64 JButton btnSearch = new JButton("検索"); 65 btnSearch.setBounds(236, 120, 117, 29); 66 contentPane.add(btnSearch); 67 68 //ボタン押下時(past) 69 btnSearch.addActionListener(new ActionListener() { 70 public void actionPerformed(ActionEvent e) { 71 SeePast.main(null); 72 //ウィンドウを閉じる 73 Component c = (Component)e.getSource(); 74 Window w = SwingUtilities.getWindowAncestor(c); 75 w.dispose(); 76 } 77 78 }); 79 } 80} 81

Java

1//SeePastクラス 2package swing_test; 3 4import java.awt.BorderLayout; 5import java.awt.EventQueue; 6 7import javax.swing.JFrame; 8import javax.swing.JPanel; 9import javax.swing.SwingConstants; 10import javax.swing.border.EmptyBorder; 11import javax.swing.JLabel; 12 13public class SeePast extends JFrame { 14 15 private JPanel contentPane; 16 17 /** 18 * Launch the application. 19 */ 20 public static void main(String[] args) { 21 EventQueue.invokeLater(new Runnable() { 22 public void run() { 23 try { 24 SeePast frame = new SeePast(); 25 frame.setVisible(true); 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 } 30 }); 31 } 32 33 /** 34 * Create the frame. 35 */ 36 public SeePast() { 37 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 38 setBounds(500, 250, 450, 300); 39 contentPane = new JPanel(); 40 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 41 setContentPane(contentPane); 42 contentPane.setLayout(null); 43 44 String lbl = "aaa"; 45 JLabel lblSelectDate = new JLabel(lbl); 46 lblSelectDate.setBounds(60, 35, 61, 16); 47 contentPane.add(lblSelectDate); 48 49 JLabel lblContents = new JLabel("学習内容", SwingConstants.RIGHT); 50 lblContents.setBounds(60, 99, 61, 16); 51 contentPane.add(lblContents); 52 53 JLabel lblFeel = new JLabel("感想", SwingConstants.RIGHT); 54 lblFeel.setBounds(60, 147, 61, 16); 55 contentPane.add(lblFeel); 56 57 JLabel lbljava = new JLabel("(例)Java"); 58 lbljava.setBounds(182, 99, 119, 16); 59 contentPane.add(lbljava); 60 61 JLabel lblUnderstand = new JLabel("(例)理解できた"); 62 lblUnderstand.setBounds(182, 147, 150, 16); 63 contentPane.add(lblUnderstand); 64 } 65 66} 67

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2019/12/29 04:15

ご質問に付けられた textbox タグは HTML ですので件とは関係ありません. 外されたほうが宜しいかと思います.
guest

回答2

0

BA が付いたようですので, 色々弄ったコードを載せさせて頂きます.
勉強用ということですが, 画面を JFrame で切り替えるような構造はサンプルでも見たことがありませんので, 各画面を JPanel 化し, CardLayout で切り替えるようにしました.
各コンポーネントを絶対座標で指定していることもとても気になるのですが, レイアウトで同等にするのが面倒ですのでそのままです.

java

1import java.awt.CardLayout; 2import java.awt.EventQueue; 3import java.awt.event.ActionEvent; 4import java.awt.event.ActionListener; 5 6import javax.swing.JButton; 7import javax.swing.JFrame; 8import javax.swing.JLabel; 9import javax.swing.JPanel; 10import javax.swing.JTextField; 11import javax.swing.SwingConstants; 12import javax.swing.border.EmptyBorder; 13 14public class Main extends JFrame { 15 16 /** 17 * Launch the application. 18 */ 19 public static void main(String[] args) { 20 EventQueue.invokeLater(new Runnable() { 21 public void run() { 22 try { 23 new Main().setVisible(true); 24 } catch (Exception e) { 25 e.printStackTrace(); 26 } 27 } 28 }); 29 } 30 31 private JPanel contentPane; 32 private CardLayout cardLayoutManager; 33 private SelectDatePanel selectDatePanel; 34 private SeePastPanel seePast; 35 36 Main() { 37 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 38 setBounds(500, 250, 450, 300); 39 40 cardLayoutManager = new CardLayout(); 41 contentPane = new JPanel(cardLayoutManager); 42 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 43 setContentPane(contentPane); 44 45 selectDatePanel = new SelectDatePanel(); 46 contentPane.add(selectDatePanel, SelectDatePanel.NAME); 47 48 seePast = new SeePastPanel(); 49 contentPane.add(seePast, SeePastPanel.NAME); 50 } 51 52 void showSeePast(String selectDate) { 53 seePast.setSelectDate(selectDate); 54 cardLayoutManager.show(contentPane, SeePastPanel.NAME); 55 } 56 57 private class SelectDatePanel extends JPanel { 58 static final String NAME = "SelectDatePanel"; 59 public SelectDatePanel() { 60 super(null); 61 62 JLabel dateLabel = new JLabel("日付を選択", SwingConstants.RIGHT); 63 dateLabel.setBounds(118, 65, 98, 32); 64 add(dateLabel); 65 66 JTextField dateTextField = new JTextField(); 67 dateTextField.setBounds(236, 68, 130, 26); 68 dateTextField.setColumns(10); 69 add(dateTextField); 70 71 JButton searchButton = new JButton("検索"); 72 searchButton.setBounds(236, 120, 117, 29); 73 add(searchButton); 74 75 //ボタン押下時 76 searchButton.addActionListener(new ActionListener() { 77 public void actionPerformed(ActionEvent e) { 78 showSeePast(dateTextField.getText()); 79 } 80 }); 81 } 82 } 83 84 private class SeePastPanel extends JPanel { 85 static final String NAME = "SeePastPanel"; 86 private JLabel selectDateLabel; 87 88 public SeePastPanel() { 89 super(null); 90 91 selectDateLabel = new JLabel("aaa"); 92 selectDateLabel.setBounds(60, 35, 61, 16); 93 add(selectDateLabel); 94 95 JLabel contentsLabel = new JLabel("学習内容", SwingConstants.RIGHT); 96 contentsLabel.setBounds(60, 99, 61, 16); 97 add(contentsLabel); 98 99 JLabel feelLabel = new JLabel("感想", SwingConstants.RIGHT); 100 feelLabel.setBounds(60, 147, 61, 16); 101 add(feelLabel); 102 103 JLabel javaLabel = new JLabel("(例)Java"); 104 javaLabel.setBounds(182, 99, 119, 16); 105 add(javaLabel); 106 107 JLabel understandLabel = new JLabel("(例)理解できた"); 108 understandLabel.setBounds(182, 147, 150, 16); 109 add(understandLabel); 110 } 111 112 void setSelectDate(String selectDate) { 113 selectDateLabel.setText(selectDate); 114 } 115 } 116}

投稿2019/12/29 09:08

jimbe

総合スコア13201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

基本的にはSeePastに引数を追加して、必要なデータを渡すのがよいと思います。
例ではDateだけですが、実際にはメモ等の情報も一緒に渡すか情報をまとめたクラスを渡すことになりますね。

Java

1package swing_test; 2 3import java.awt.Component; 4import java.awt.Window; 5import java.awt.event.ActionEvent; 6import java.awt.event.ActionListener; 7import java.text.SimpleDateFormat; 8import java.util.Date; 9import javax.swing.JButton; 10import javax.swing.JFrame; 11import javax.swing.JLabel; 12import javax.swing.JPanel; 13import javax.swing.JSpinner; 14import javax.swing.SpinnerDateModel; 15import javax.swing.SwingConstants; 16import javax.swing.SwingUtilities; 17import javax.swing.border.EmptyBorder; 18 19 20class SelectDate extends JFrame { 21 private JPanel contentPane; 22 23 public static void main(String[] args) { 24 SelectDate frame = new SelectDate(); 25 frame.setVisible(true); 26 } 27 28 public SelectDate() { 29 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 30 setBounds(500, 250, 450, 300); 31 contentPane = new JPanel(); 32 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 33 setContentPane(contentPane); 34 contentPane.setLayout(null); 35 36 JLabel lblDate = new JLabel("日付を選択", SwingConstants.RIGHT); 37 lblDate.setBounds(118, 65, 98, 32); 38 contentPane.add(lblDate); 39 40 // テキストフィールドだと不正な日付等の処置が面倒なのでスピナーで 41 SpinnerDateModel model = new SpinnerDateModel(); 42 JSpinner spinner = new JSpinner(model); 43 JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "yyyy.MM.dd"); 44 spinner.setEditor(editor); 45 spinner.setBounds(236, 68, 130, 26); 46 contentPane.add(spinner); 47 48 JButton btnSearch = new JButton("検索"); 49 btnSearch.setBounds(236, 120, 117, 29); 50 contentPane.add(btnSearch); 51 52 btnSearch.addActionListener(new ActionListener() { 53 public void actionPerformed(ActionEvent e) { 54 // 入力された日付の取得 55 Date value = (Date) model.getValue(); 56 // 日付を引数にして渡す 57 SeePast frame = new SeePast(value); 58 frame.setVisible(true); 59 60 Component c = (Component) e.getSource(); 61 Window w = SwingUtilities.getWindowAncestor(c); 62 w.dispose(); 63 } 64 }); 65 } 66} 67 68class SeePast extends JFrame { 69 private JPanel contentPane; 70 71 // 日付を引数でもらう 72 public SeePast(Date date) { 73 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 74 setBounds(500, 250, 450, 300); 75 contentPane = new JPanel(); 76 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 77 setContentPane(contentPane); 78 contentPane.setLayout(null); 79 80 // 日付の書式設定 81 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E曜日"); 82 // 日付の書式を指定して文字列に 83 String lbl = sdf.format(date); 84 JLabel lblSelectDate = new JLabel(lbl); 85 lblSelectDate.setBounds(60, 35, 150, 16); 86 contentPane.add(lblSelectDate); 87 88 JLabel lblContents = new JLabel("学習内容", SwingConstants.RIGHT); 89 lblContents.setBounds(60, 99, 61, 16); 90 contentPane.add(lblContents); 91 92 JLabel lblFeel = new JLabel("感想", SwingConstants.RIGHT); 93 lblFeel.setBounds(60, 147, 61, 16); 94 contentPane.add(lblFeel); 95 96 JLabel lbljava = new JLabel("(例)Java"); 97 lbljava.setBounds(182, 99, 119, 16); 98 contentPane.add(lbljava); 99 100 JLabel lblUnderstand = new JLabel("(例)理解できた"); 101 lblUnderstand.setBounds(182, 147, 150, 16); 102 contentPane.add(lblUnderstand); 103 } 104}

日付を選択し指定日のメモ等が新たにウィンドウを出すということだと思いますが、SelectDateは閉じちゃっていいんでしょうか?
戻れなくなってしまいそうですが。


追記(変更最小)

Java

1import java.awt.Component; 2import java.awt.EventQueue; 3import java.awt.Window; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6import javax.swing.JButton; 7import javax.swing.JFrame; 8import javax.swing.JLabel; 9import javax.swing.JPanel; 10import javax.swing.JTextField; 11import javax.swing.SwingConstants; 12import javax.swing.SwingUtilities; 13import javax.swing.border.EmptyBorder; 14 15public class SelectDate extends JFrame { 16 17 private JPanel contentPane; 18 private JTextField txtDate; 19 20 /** 21 * Launch the application. 22 */ 23 public static void main(String[] args) { 24 EventQueue.invokeLater(new Runnable() { 25 public void run() { 26 try { 27 SelectDate frame = new SelectDate(); 28 frame.setVisible(true); 29 } catch (Exception e) { 30 e.printStackTrace(); 31 } 32 } 33 }); 34 } 35 36 /** 37 * Create the frame. 38 */ 39 public SelectDate() { 40 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 41 setBounds(500, 250, 450, 300); 42 contentPane = new JPanel(); 43 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 44 setContentPane(contentPane); 45 contentPane.setLayout(null); 46 47 JLabel lblDate = new JLabel("日付を選択", SwingConstants.RIGHT); 48 lblDate.setBounds(118, 65, 98, 32); 49 contentPane.add(lblDate); 50 51 txtDate = new JTextField(); 52 txtDate.setBounds(236, 68, 130, 26); 53 contentPane.add(txtDate); 54 txtDate.setColumns(10); 55 //txtDateの値を取り出す 56 String txtdata = txtDate.getText(); 57 58 JButton btnSearch = new JButton("検索"); 59 btnSearch.setBounds(236, 120, 117, 29); 60 contentPane.add(btnSearch); 61 62 //ボタン押下時(past) 63 btnSearch.addActionListener(new ActionListener() { 64 public void actionPerformed(ActionEvent e) { 65 String txtdata = txtDate.getText(); 66 SeePast frame = new SeePast(txtdata); 67 frame.setVisible(true); 68 //ウィンドウを閉じる 69 Component c = (Component) e.getSource(); 70 Window w = SwingUtilities.getWindowAncestor(c); 71 w.dispose(); 72 } 73 74 }); 75 } 76} 77 78class SeePast extends JFrame { 79 80 private JPanel contentPane; 81 82 /** 83 * Launch the application. 84 */ 85 public static void main(String[] args) { 86 EventQueue.invokeLater(new Runnable() { 87 public void run() { 88 try { 89 SeePast frame = new SeePast("aaa"); 90 frame.setVisible(true); 91 } catch (Exception e) { 92 e.printStackTrace(); 93 } 94 } 95 }); 96 } 97 98 /** 99 * Create the frame. 100 */ 101 public SeePast(String str) { 102 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 103 setBounds(500, 250, 450, 300); 104 contentPane = new JPanel(); 105 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 106 setContentPane(contentPane); 107 contentPane.setLayout(null); 108 109 String lbl = str; 110 JLabel lblSelectDate = new JLabel(lbl); 111 lblSelectDate.setBounds(60, 35, 61, 16); 112 contentPane.add(lblSelectDate); 113 114 JLabel lblContents = new JLabel("学習内容", SwingConstants.RIGHT); 115 lblContents.setBounds(60, 99, 61, 16); 116 contentPane.add(lblContents); 117 118 JLabel lblFeel = new JLabel("感想", SwingConstants.RIGHT); 119 lblFeel.setBounds(60, 147, 61, 16); 120 contentPane.add(lblFeel); 121 122 JLabel lbljava = new JLabel("(例)Java"); 123 lbljava.setBounds(182, 99, 119, 16); 124 contentPane.add(lbljava); 125 126 JLabel lblUnderstand = new JLabel("(例)理解できた"); 127 lblUnderstand.setBounds(182, 147, 150, 16); 128 contentPane.add(lblUnderstand); 129 } 130}

投稿2019/12/29 03:35

編集2019/12/29 06:25
TN8001

総合スコア9855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiaetakoga

2019/12/29 05:57

ご回答ありがとうございます。 初心者で、正直内容についていけないため、日付にこだわらなくて良いので、 テキストボックスに記載した内容をそのまま別ファイル(SeePastクラス)に転記する方法をご教示いただけないでしょうか。 可能な限り、現行のコードから変更しないで記載いただければ幸いです。 ※あくまで勉強用に作成しているものなので、実務的なことは無視していただければと思います。
TN8001

2019/12/29 06:26

それは失礼しました。 変更点を最小にしたものを追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問