現在、java でGUIを用いた簡単なプログラムを作成しています。
設定画面として各種設定を押したら新しいフレームを開き、その中でいろいろな設定をさせたいと思っています。
Jmenuでメニューを実装し、メニューアイテムとして"各種設定"というものを用意したところまではいいのですが
各種設定のボタンを押して、フレームこそ開くものの、用意したはずのボタンやテキストエリアが表示されず、フレームだけ表示される、という状態になっています。
そもそも、各種設定画面はフレームを用意するやり方ではよくないのか、ただ単純に私のプログラムがおかしいのか、どなたか教えて頂けると助かります。
プログラムの機能としては、
実行すると、プログラム名と作者名を入力する欄があり、内容を入力して、作成ボタンを押すと
/*****
プログラム名
今日の日付(曜日) 作者名
*****/
とコメント文で記述されたjavaファイルが作成される、というものです。
設定画面で、作者名を毎回入力するのではなく、一度設定で入力すればずっと適用されるようにしたり、プログラムの作成先等を設定させたいと考えていますが、上記のような状態で実装できていません。
下にソースを載せますので、お願いいたします。
import java.io.File;
import java.io.IOException;
import java.io.FileWriter;
import java.util.;
import java.util.Scanner;
import javax.swing.;
import java.awt.;
import java.awt.event.;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.BoxLayout;
import javax.swing.Box;
public class mendo3 extends JFrame implements ActionListener{
JTextField text1; JTextField text2; JLabel label;
public static void main(String args[]){
mendo3 frame = new mendo3("カダイマン");
frame.setVisible(true);
}
mendo3(String title){ setTitle(title); setBounds(100,100, 700, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar(); JMenu menu1 = new JMenu("設定"); menubar.add(menu1); JMenuItem menuitem1 = new JMenuItem("各種設定"); menu1.add(menuitem1); menuitem1.addActionListener(this); JPanel p = new JPanel(); p.setLayout(null); JLabel label1 = new JLabel("プログラム名:"); label1.setBounds(0,10,150,30); text1 = new JTextField("", 20); text1.setBounds(100,10,200,30); JLabel label2 = new JLabel(" 作成者氏名:"); label2.setBounds(0,50,150,30); text2 = new JTextField("", 20); text2.setBounds(100,50,200,30); JButton button = new JButton("作成"); button.setBounds(230,100,70,30); button.addActionListener(this); label = new JLabel(); p.add(text1); p.add(text2); p.add(label1); p.add(label2); p.add(button); setJMenuBar(menubar); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ if (e.getActionCommand() == "作成"){ String programName = text1.getText(); String youName = text2.getText(); File newfile = new File(programName+".java");//mendo.java のある場所にファイルを作成する Calendar now = Calendar.getInstance(); String[] week = new String[7]; week[0] = "日"; week[1] = "月"; week[2] = "火"; week[3] = "水"; week[4] = "木"; week[5] = "金"; week[6] = "土"; int y = now.get(now.YEAR); //年を取得 int m = now.get(now.MONTH) + 1; //月を取得 int d = now.get(now.DATE); //日を取得 int week_int = now.get(now.DAY_OF_WEEK);//曜日を数値で取得 try{ if(newfile.createNewFile()){ System.out.println("successed"); FileWriter filewriter = new FileWriter(newfile); filewriter.write("/****************************************\r\n"); filewriter.write(" "+programName+"\r\n"); filewriter.write(y+"/"+m+"/"+d+" ("+week[week_int -1]+") "+youName+"\r\n"); filewriter.write("*********************************+++****/\r\n\r\n\r\n"); filewriter.close(); }else{ System.out.println("Error!"); } }catch(IOException ee){ System.out.println(ee); } }else if(e.getActionCommand() == "各種設定"){ JFrame frames = new JFrame("各種設定"); frames.setVisible(true); frames.setBounds(100,100, 700, 500); JPanel p = new JPanel(); p.setLayout(null); JLabel label2 = new JLabel(" 作成者氏名:"); label2.setBounds(0,50,150,30); text2 = new JTextField("", 20); text2.setBounds(100,50,200,30); p.add(label2); p.add(text2); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); }
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/13 13:17
2016/01/03 08:43
2016/01/03 09:40
2016/01/03 10:52
2016/01/03 11:21
2016/01/03 11:40