• 締切済み

アプリケーション

初歩的な質問ですが下のプログラムを書いたのですが表示されませんでした。下のプログラムのどこが間違ってますか? これが問題です。 ・フレームに部品を配置するプログラムを作成しなさい。  BorderLayoutによりボタン1,テキストエリア,ボタン2が配置  ボタン1をクリックするとテキストエリアに文字を埋める  ボタン2をクリックするとテキストエリアをクリアする import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements ActionListener { TextArea txtar1; Button btn1, btn2; public MyFrame(String title) { super(title) ; // タイトル設定 addWindowListener(new WindowAdapter(){// 閉じるボタン対応 public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void init(){ setLayout(new BorderLayout(5,5)); // 文字列表示のボタンをBorderLayoutの北に配置 btn1=new Button("文字列表示"); add(btn1,BorderLayout.NORTH); txtar1 = new TextArea(); add(txtar1,BorderLayout.CENTER);// テキストエリアをBorderLayoutの中央に配置 btn2=new Button("文字列クリア"); add(btn2,BorderLayout.SOUTH); // 文字列クリアのボタンをBorderLayoutの南に配置 } public void actionPerformed (ActionEvent e) { // ボタン押下対応 if (e.getSource() == btn1) { txtar1.setText("AAAAAAAAAA\nBBBBBBBBBB\nCCCCCCCCCC\n"); } else if (e.getSource() == btn2) { txtar1.setText("");   }  } } public class JaFram { public static void main(String args[]) { MyFrame frm = new MyFrame("フレームテスト"); frm.setSize(300, 200); // 窓サイズを横300,縦200にする frm.setVisible(true) ; // フレームを表示する  } }

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

MyFrame#init()メソッドを処理が通ってないように見えます。 JaFram#main()から、呼び出すと良いでしょう。 こんな風に。 public class JaFram {   public static void main(String args[]) {     MyFrame frm = new MyFrame("フレームテスト");     frm.setSize(300, 200); // 窓サイズを横300,縦200にする     frm.init();     frm.setVisible(true) ; // フレームを表示する   } }

mt_15_gir
質問者

お礼

ありがとうございました

関連するQ&A

  • finalの意味

    import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ExerciseD8L1{ public static void main(String args[]){ final JFrame myFrame = new JFrame(); myFrame.getContentPane().setLayout(new BorderLayout()); final JLabel myLabel = new JLabel(); JPanel myPanel = new JPanel(); myFrame.getContentPane().add(myLabel,BorderLayout.CENTER); myFrame.getContentPane().add(myPanel,BorderLayout.NORTH); JButton btn1 = new JButton("btn1"); btn1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ myLabel.setText("btn1がクリックされました"); } }); }); myPanel.add(btn1); myFrame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); myFrame.setSize(400,100); myFrame.setVisible(true); } } これで、finalをつけないとコンパイルできません。 なぜ、fianlが必要なんでしょう。 どのようなときにfinalを用いるのでしょう。 お願いします。

    • ベストアンサー
    • Java
  • JavaでのSwingを使った簡易電卓作成

    Javaについて勉強中の学生です。 よろしくお願いします。 CGIによるプログラムは一通り勉強しました。 次にGUIによるプログラムを勉強中です。 そこで電卓を作ってみようと思いましたが、よくわからないところがあります。 ご教示いただければ幸いです。 一応外見だけは作ることができましたが、イベントを登録するときに電卓のボタンをbtn1,btn2,btn3…とすればイベントを登録することはできるのですが、それだとボタンの分だけ作成しなければならず修正を加えるのが大変になってしまいます。 例)btn1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ hyozi.setText(hyozi.getText() + "1"); } } そこで「btn」に統一しボタンに表示されている文字列を使い簡潔にプログラムをまとめたいのですがどのようにすればよいのかわかりません。以下のプログラムに追加できるようなものを教えていただけないでしょうか? import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Dentaku{ private JFrame frame; private JPanel panel_fun,panel_ten; private JTextField hyozi; private JButton btn; public Dentaku(){ //フレームの作成してレイアウトをセット frame = new JFrame("簡易電卓プログラム"); frame.setLayout(new BorderLayout()); //パネルを作成してレイアウトをセット panel_fun = new JPanel(); panel_fun.setLayout(new GridLayout(2,3)); panel_ten = new JPanel(); panel_ten.setLayout(new GridLayout(4,3)); //表示用テキストボックスを作成 hyozi = new JTextField(); //電卓のボタンを作成 panel_fun.add(btn = new JButton("CA")); panel_fun.add(btn = new JButton("+")); panel_fun.add(btn = new JButton("-")); panel_fun.add(btn = new JButton("*")); panel_fun.add(btn = new JButton("/")); panel_fun.add(btn = new JButton("=")); panel_ten.add(btn = new JButton("1")); panel_ten.add(btn = new JButton("2")); panel_ten.add(btn = new JButton("3")); panel_ten.add(btn = new JButton("4")); panel_ten.add(btn = new JButton("5")); panel_ten.add(btn = new JButton("6")); panel_ten.add(btn = new JButton("7")); panel_ten.add(btn = new JButton("8")); panel_ten.add(btn = new JButton("9")); panel_ten.add(btn = new JButton("0")); //フレームに表示用テキストボックスをセット(BorderLayoutの北側) frame.add(hyozi,BorderLayout.NORTH); //フレームにパネルをセット(BorderLayoutの中央,南側) frame.add(panel_fun,BorderLayout.CENTER); frame.add(panel_ten,BorderLayout.SOUTH); //フレームの詳細設定 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,250); frame.setVisible(true); } //mainメソッドの定義 public static void main(String[] args){ Dentaku application = new Dentaku(); } }

    • ベストアンサー
    • Java
  • JButtonの配置

    FlowLayoutによって、JFrameにボタン6個を2×3に配列するプログラムを考えています。ボタンを配置することはできたのですが、ウインドウの大きさを変えるとボタンが3×2になったりと変更してしまいます。 ウインドウの大きさを変えても、ボタンの大きさは変えず、ボタン6個が2×3配列になるプログラムはどうしたらよいのでしょうか?以下は、途中のプログラムです。 import java.awt.*; import javax.swing.*; public class sample { public static void main(String[] args){ MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } public class MyFrame extends JFrame { public static final int WIDTH = 200; public static final int HEIGHT = 300; public MyFrame(){ setSize(WIDTH,HEIGHT); Container contentPane = getContentPane(); MyPanel panel = new MyPanel(); contentPane.add(panel); } } public class MyPanel extends JPanel{ public static final int MESSAGE_X = 200; public static final int MESSAGE_Y = 200; setLayout(new FlowLayout()); JButton button1 = new JButton("Button1"); contentPane.add(button1); JButton button2 = new JButton("Button2"); contentPane.add(button2); JButton button3 = new JButton("Button3"); contentPane.add(button3); JButton button4 = new JButton("Button4"); contentPane.add(button4); JButton button5 = new JButton("Button5"); contentPane.add(button5); JButton button6 = new JButton("Button6"); contentPane.add(button6); }

    • ベストアンサー
    • Java
  • JavaのSwingのレイアウト

    Swingを学習中ですが、うまくレイアウトできません。 添付した画像のようなレイアウトにしたいです。 作ってみたものは以下です。 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.*; public class LayoutTest { public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); JTextField searchFiled = new JTextField("テキスト"); String[] comboboxString = {"C", "C++", "Java"}; JComboBox comboBox = new JComboBox(comboboxString); JButton button = new JButton("ボタン"); panel.add(comboBox, BorderLayout.EAST); panel.add(searchFiled, BorderLayout.CENTER); panel.add(button, BorderLayout.WEST); frame.add(panel, BorderLayout.PAGE_START); JPanel redPanel = new JPanel(); redPanel.setBackground(Color.RED); frame.add(redPanel); frame.setSize(700, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); } }

    • ベストアンサー
    • Java
  • ウインドウアプリケーション

    すみませんが、描画を行うアプレットを作りたいのですが、??がついているところがわからないので教えてもらえますか? import java.awt.*; import java.awt.event.*; class JaDrawFrame extends Frame implements ItemListener, ActionListener { CheckboxGroup color_cbx, shape_cbx; Checkbox c1, c2, c3, s1, s2, s3; Button bt1, bt2; Panel northpanel, southpanel; ??/* northpanelはNORTH用のパネル,southpanelはSOUTH用のパネル*/ int color = 1, shape = 1; ??/* color は色を指定する変数1:赤, 2:緑, 3: 青*/ ??/* shape は形を指定する変数1:円, 2:四角, 3: 直線*/ boolean disp = false; ??/* dispがtrueの時描画,falseの時消去*/ public JaDrawFrame(String title) { setTitle(title); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); setLayout(new BorderLayout()); color_cbx = new CheckboxGroup(); shape_cbx = new CheckboxGroup(); northpanel = new Panel(); ??/* Northの2つのチェックボックスグループの設定*/ add(northpanel, BorderLayout.NORTH); southpanel = new Panel(); ??/* Southのボタン設定*/ add(southpanel,BorderLayout.SOUTH); } public void itemStateChanged(ItemEvent e) { ??/* チェックボックスのイベント処理*/ } public void actionPerformed(ActionEvent e) { Button bt = (Button) e.getSource(); ??/* ボタンのイベント処理*/ repaint(); } public void paint(Graphics g) { if (disp) { if(color == 1) g.setColor(Color.red); else if(color == 2) g.setColor(Color.green); else g.setColor(Color.blue); if(shape == 1) g.drawOval(100,100,100,100); else if(shape == 2) g.drawRect(100,100,100,100); else g.drawLine(100,100,200,200); } else { g.clearRect(100,100,100,100); } } } public class JaDrawFrame { public static void main(String args[]) { JaDrawFrame frm = new JaDrawFrame(“DrawFrame"); // フレームの生成 frm.setSize(400, 300); // 窓サイズ横、縦 frm.setVisible(true); // フレームを表示する } }

  • javaのボタン表示等に関する質問

    下記のコードはフォームをNORTH、CENTER、SOUTHEに分割して、それぞれのpaneに ラベルとボタンを表示するものです。 Q1)myFrame.setBounds(350,0, total_x, total_y)をコンストラクターの最初に記述しますと  フォームの表示が正常でなく、コンストラクターの最後では、正常に行なわれます。  この理由等について、コメント頂けますと有り難いです。 Q2)mainに記述してある、下記のコードは無くても、Xでクロースできますが,このコード  の記述は正しいでしょうか GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 以上お手数ですが、コメント頂けますと大変助かります。 //============================================= import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class GridLayout_new extends JFrame{ int panelA_x=200, panelA_y=50; int panelB_x=200, panelB_y=200; int panelC_x=200, panelC_y=50; int total_x=panelA_x; int total_y=panelA_y+panelB_y+panelC_y; public static void main(String[] args){ GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } GridLayout_new(){ JFrame myFrame=new JFrame(); myFrame.setTitle("panelA"); // myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示が出来ない myFrame.setVisible(true); LineBorder border = new LineBorder(Color.BLACK, 1, true); //======================== JLabel button1=new JLabel("Label1"); GLabel_Layout(button1, border); JButton button2 = new JButton("button2"); button_Layout(button2, border); //======================== JLabel button3=new JLabel("Label3"); GLabel_Layout(button3, border); JButton button4 = new JButton("button4"); button_Layout(button4, border); //======================== JLabel button5=new JLabel("Label5"); GLabel_Layout(button5, border); JButton button6 = new JButton("button6"); //======================== JLabel button7=new JLabel("Label7"); GLabel_Layout(button7, border); JButton button8 = new JButton("button8"); //======================== JLabel button9=new JLabel("Label9"); GLabel_Layout(button9, border); JButton button10 = new JButton("button10"); button_Layout(button10, border); //======================== JLabel button11=new JLabel("Label11"); GLabel_Layout(button11, border); JButton button12 = new JButton("button12"); button_Layout(button12, border); //================================== JPanel p1 = new JPanel(); GridLayout layout1 = new GridLayout(2,2); //2行、2列の設定 layout1.setHgap(2); layout1.setVgap(10); p1.setLayout(layout1); p1.setBackground(Color.GREEN); p1.add(button1); p1.add(button2); p1.add(button3); p1.add(button4); myFrame.setSize(panelA_x, panelA_y); myFrame.getContentPane().add(p1, BorderLayout.NORTH); //============================== JPanel p2 = new JPanel(); GridLayout layout2 = new GridLayout(2,2); //2行、2列の設定 layout2.setHgap(2); layout2.setVgap(10); p2.setLayout(layout2); p2.setBackground(Color.GREEN); p2.add(button5); p2.add(button6); p2.add(button7); p2.add(button8); myFrame.setSize(panelB_x, panelB_y); myFrame.getContentPane().add(p2, BorderLayout.CENTER); //================================== JPanel p3 = new JPanel(); GridLayout layout3 = new GridLayout(2,2); //2行、2列の設定 layout3.setHgap(2); layout3.setVgap(10); p3.setLayout(layout3); p3.setBackground(Color.GREEN); p3.add(button9); p3.add(button10); p3.add(button11); p3.add(button12); myFrame.setSize(panelC_x, panelC_y); myFrame.getContentPane().add(p3, BorderLayout.SOUTH); myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示 } //constructor void GLabel_Layout(JLabel label, LineBorder border){ label.setPreferredSize(new Dimension(80,20)); label.setBorder(border); label.setBackground(Color.lightGray); label.setOpaque(true); } void button_Layout(JButton button, LineBorder border){ button.setPreferredSize(new Dimension(80,20)); button.setBorder(border); } } //main class....GridLayout_new

    • ベストアンサー
    • Java
  • 【Java】モーダルDLG内でリストを表示

    Javaを学習し始めて間もない初心者です。よろしくお願いします。 ======================================== 開発環境:Eclipse SDK(Version: 3.5.0) 開発言語:Java ======================================== にて、プログラムを作成しています。 メインDLGの中に配置したボタンを押下したタイミングで、 モーダルDLGを開き、そのDLG内にリストを表示させたいのですが、 参考サイトなどを見ながら、とりあえずモーダルDLGは表示されましたが、 リストが表示されません。 下記に作成ソースを記載しますので、解決法をご存知の方おられましたら、 どこが悪く、どう修正すれば良いかについて、ご教示お願い致します。 なお、当方学習中の身ですので、より良いコードを書くために、 その他の指摘などももしあれば幸いです。 【ソースコード】 import javax.swing.*; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.Frame; import java.awt.event.*; import java.awt.*; public class TestList extends JFrame implements ActionListener{ Dialog dlg; Frame frm; public static void main(String[] args){ TestList frame = new TestList(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 400, 100); frame.setTitle("リスト表示"); frame.setVisible(true); } TestList(){ { // リスト表示ボタンを追加 JButton btn = new JButton("リストDLGを表示"); btn.addActionListener(this); JPanel p2 = new JPanel(); p2.add(btn); getContentPane().add(p2, BorderLayout.CENTER); } } // ボタン押下イベントを取得する関数 public void actionPerformed(ActionEvent e){ // リスト表示ボタンが押下された時 if (frm == null) { frm = new Frame("リスト"); frm.setSize(200 , 200); frm.setVisible(true); String list_n[] = {"テスト1", "テスト2", "テスト3", "テスト4", "テスト5"}; JList list = new JList(list_n); dlg = new Dialog(frm, "リスト" , true); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(list); sp.setPreferredSize(new Dimension(200, 80)); JPanel p = new JPanel(); p.add(sp); dlg.add(p, BorderLayout.CENTER); } } }

    • ベストアンサー
    • Java
  • getInsets() メソッドの使い方について

    JAVA言語を勉強中の者です getInsets() メソッドでフレームの外周に空白部分を 作るのですが、その場合は以下のように   public Insets getInsets(){     return new Insets(40,10,10,10);   } とオーバーライドするとあります。 オーバーライドのみで外周に空白ができるのを確認できたのですが このオーバーライドされたメソッドをフレームのコンストラクター内等でgetInsets(); とメソッドを書かなければ, このメソッドはフレームに反映されなのではないかと考えているのですが、 実際は書かなくても外周の空白はきっちりととれます。 どうしてオーバーライドのみでこのメソッドは実行結果に反映されるのでしょうか。 よろしくお願いします   MyFrame(String ss){     .............     getInsets(); //この記述不要で動作します     .............   } 簡単なソースを記述しました import java.awt.*; public class Sample{   public static void main(String args[]){     MyFrame frame = new MyFrame("Sample.java");     frame.setSize(200,200);     frame.setVisible(true);   } } class MyFrame extends Frame{   Button b1, b2, b3, b4;   MyFrame(String ss){     super(ss);     setLocation(100,100);     setLayout(new GridLayout(2,2));     //getInsets(); この記述がないと外周空白はできないと考えています     add(b1=new Button("1"));     add(b2=new Button("2"));     add(b3=new Button("3"));     add(b4=new Button("4"));   }   public Insets getInsets(){     return new Insets(40,10,10,10);   } }

    • ベストアンサー
    • Java
  • テキストフィールドの文字をテキストエリアに表示する

    エラーも例外もないです。 但し今回の内容の"テキストフィールドに打ち込みエンターキーを文字をテキストフィールドに表示" が満たしてないですとりあえずソース乗せます mport java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class MyMemo { public static void main(String[] args) { JFrame Frame = new JFrame("課題"); Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Frame.setSize(500, 500); Frame.setLocationRelativeTo(null); Container contentPane = Frame.getContentPane(); // テキストフィールドのインスタンスを生成 final JTextField text = new JTextField();// テキストエリアのインスタンスを生成 text.addActionListener(new MyActionListener()); Frame.setVisible(true); final JTextArea Area = new JTextArea(5,0); // スクロールペインにテキストエリアを追加 JScrollPane scrollPane = new JScrollPane(Area); // パネルをコンポーネントに配置 contentPane.add(text, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); Frame.setVisible(true); } static class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } } どう文字をテキストエリアに表示したらいいのかわからなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 簡単な暴走プログラム

    ボタンをクリックすると、classのディレクトリ文字を追加するという プログラにしようと思っています。 ボタンをクリックすると、テキストエリアへの書き込みが止まりません。 ソースではループしているように見えないから原因不明です。 どこが悪く、どう直せばいいんですか? import java.awt.*; public class aaaa0 extends java.applet.Applet { Button btn; TextArea ta; public void init() { add(ta = new TextArea(50, 50)); add(btn = new Button("Btn")); } public boolean action (Event e, Object o) { if (e.target == btn) { String str = ""; String buf = ""; str = getCodeBase().toString(); buf = ta.getText(); ta.setText(buf + "\r\n" + str); } return super.handleEvent(e); } }

    • ベストアンサー
    • Java

専門家に質問してみよう