CardLayoutに関する質問です

このQ&Aのポイント
  • CardLayoutのパネルにFlowLayoutのパネルを追加してもボタンが右端で折り返してくれません
  • CardLayoutとFlowLayoutを組み合わせて使用する例が見つかりませんでした
  • ソースコードを記載いたしました。お知恵をお借りできれば幸いです
回答を見る
  • ベストアンサー

CardLayoutに関する質問です

前回、swingに関する質問をさせていただいたものです。 前回頂いたご回答をヒントに新しく作り直したのですが、CardLayoutのパネルにFlowLayoutのパネルを追加してもボタンが右端で折り返してくれません。 色々調べたのですが、この二つのレイアウトを使った例が見つかりませんでした。 長文になりますが、以下にソースを記載いたします。 今一度、お知恵をお借りできれば幸いです。 ------------以下ソースコード------------------- import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.imageio.*; import javax.swing.Timer; class Main extends JPanel implements ActionListener{ static JFrame frame = new JFrame(); String[] imgStr = { "1","2","3","4","5","6","7","8","9", "10","11","12","13","14","15","16","17","18", "19","20","21","22","23","24","25","26","27", "28","29","30","31","32","33","34","35","36", "37","38","39","40","41","42","43","44","45","46","終了"}; JButton[] bt = new JButton[imgStr.length]; JPanel mainPanel = new JPanel(); JPanel btPanel = new JPanel(); JPanel image; MediaTracker tracker; CardLayout cardLayout = new CardLayout(); Image img; ImageCanvas canvas; Timer time = new Timer(0,this); int eventNo = -1; public static void main(String[] args){ frame.add(new Main()); frame.setLayout(new FlowLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(0, 0, 1024, 576); frame.setTitle("タイトル"); frame.setVisible(true); } public Main(){ mainPanel.setLayout(cardLayout); mainPanel.setBounds(0, 0, 1024, 576); btPanel.setBounds(0, 0, 1024, 576); for(int i=0; i<imgStr.length; i++){ bt[i] = new JButton(imgStr[i]); bt[i].setActionCommand(imgStr[i]); bt[i].addActionListener(this); btPanel.add(bt[i]); } btPanel.setLayout(new FlowLayout()); mainPanel.add(btPanel,"bt"); add(mainPanel); } public void actionPerformed(ActionEvent e){ if(e.getActionCommand() == null){ eventNo = -1; }else{ for(int i=0; i<imgStr.length; i++){ if(e.getActionCommand().equals(imgStr[i])){eventNo = i;} } } if(eventNo==-1){ time.stop(); cardLayout.show(mainPanel,"bt"); } if(eventNo==46){ System.exit(0); } if(eventNo>=0){ tracker = new MediaTracker(this); try{ img = ImageIO.read(new File("./image/001.jpg")); tracker.addImage(img, 0); tracker.waitForAll(); canvas = new ImageCanvas(img); mainPanel.setBounds(0, 0, 1024, 576); mainPanel.add(canvas,"img"); cardLayout.show(mainPanel,"img"); time.setInitialDelay(5000); time.start(); }catch(Exception ex){ System.out.println(ex); } } } }

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

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんにちは。  mainPanel と Mainクラスのインスタンスの役割がかぶっているので、混乱してしまっているようです。  そこら辺を整理した方がいいです。  あと、各パネルに setBounds をしていますが、LayoutManager を使っているなら、意味がないので不要です。 class Main extends JPanel implements ActionListener {   static JFrame frame = new JFrame();   String[] imgStr = {"1", "2", "3", "4", "5", "6", "7", "8", "9",     "10", "11", "12", "13", "14", "15", "16", "17", "18",     "19", "20", "21", "22", "23", "24", "25", "26", "27",     "28", "29", "30", "31", "32", "33", "34", "35", "36",     "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "終了"};   JButton[] bt = new JButton[imgStr.length];   JPanel btPanel = new JPanel();   JPanel image;   MediaTracker tracker;   CardLayout cardLayout = new CardLayout();   Image img;   JLabel canvas;   Timer time = new Timer(0, this);   int eventNo = -1;   public static void main(String[] args) {     frame.setLayout(new BorderLayout());     frame.add(new Main(), BorderLayout.CENTER);     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.setBounds(0, 0, 1024, 576);     frame.setTitle("タイトル");     frame.setVisible(true);   }   public Main() {     setLayout(cardLayout);     btPanel.setLayout(new FlowLayout());     for (int i = 0; i < imgStr.length; i++) {       bt[i] = new JButton(imgStr[i]);       bt[i].setActionCommand(imgStr[i]);       bt[i].addActionListener(this);       btPanel.add(bt[i]);     }     add(btPanel, "bt");   }   public void actionPerformed(ActionEvent e) {     if (e.getActionCommand() == null) {       eventNo = -1;     } else {       for (int i = 0; i < imgStr.length; i++) {         if (e.getActionCommand().equals(imgStr[i])) {           eventNo = i;         }       }     }     if (eventNo == -1) {       time.stop();       cardLayout.show(this, "bt");     }     if (eventNo == 46) {       System.exit(0);     }     if (eventNo >= 0) {       tracker = new MediaTracker(this);       try {         img = ImageIO.read(new File("001.JPG"));         tracker.addImage(img, 0);         tracker.waitForAll();         canvas = new JLabel(new ImageIcon(img));         this.add(canvas, "img");         cardLayout.show(this, "img");         time.setInitialDelay(5000);         time.start();       } catch (Exception ex) {         System.out.println(ex);       }     }   } }

java0218
質問者

お礼

ご回答ありがとうございます。 ソースコードの手直しまでしていただいて頭が上がりません。 必要以上に設定してしまっていたことと、私自身インスタンスとthisに対する認識が甘いと痛感いたしました。 また困ったことがあれば質問させていただきますので、その時はまたご教授頂ければ幸いです。

関連するQ&A

  • javaアプリのswingに関する質問です

    始めて投稿させていただきます。 現在、javaアプリケーションのswingを利用し、ボタンを押したら画像が表示され、ウエイトの時間を過ぎると自動的に画像が消え、またボタンが表示され・・・を繰り返すプログラムを作っています。 ですが、色々なサイトを拝見させていただき、修正を加えたのですが思うように動いてくれません。 そこで、皆様のお知恵を拝借出来ればと思い投稿させていただきました。 下記にソースコードを記載しております。 すべてのソースコードを記載しておりますので長くなっております。 また最終的には、50個前後のボタン、画像の拡大等を行う予定です。 長文になりますがアドバイスをいただけましたら幸いです。 -----------以下ソースコード-------------------- import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.imageio.*; class Test extends JPanel implements ActionListener{ static JFrame frame = new JFrame(); JButton bt1; JButton bt2; JPanel pn1 = new JPanel(); Dimension dim = this.getToolkit().getScreenSize(); int eventNo = -1; public Test() { frame.setTitle("これ"); frame.setUndecorated(true); frame.setBounds(0, 0, 640, 480); btStart(); pn1.setLayout(new FlowLayout()); frame.add(pn1); frame.setVisible(true); } public void btStart(){ bt1 = new JButton("テスト"); bt2 = new JButton("終了"); pn1.add(bt1); pn1.add(bt2); bt1.addActionListener(this); bt2.addActionListener(this); } // ボタン消去メソッド public void btFormat(){ frame.remove(pn1); bt1 = null; bt2 = null; } public void actionPerformed(ActionEvent e){ if(e.getActionCommand() == "テスト") {eventNo = 1;} if(e.getActionCommand() == "終了") {eventNo = 46;} repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; if(eventNo == 46){ System.exit(0); }else if(eventNo == -1){ g2.clearRect(0, 0, 640, 480); }else if(eventNo >= 0){ eventNo = -1; btFormat(); try{ g2.drawImage(ImageIO.read(new File("./image/001.jpg")), 0, 0, this); frame.add(this); sleep(100); g2.clearRect(0, 0, 640, 480); btStart(); pn1.setLayout(new FlowLayout()); frame.add(pn1); }catch(Exception e){ System.out.println(e); } } } // ウェイトを掛けるメソッド public synchronized void sleep(long msec) { for(int i=0; i<=msec; i++){ try { wait(1); } catch(InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add( new Test() ); } }

    • ベストアンサー
    • Java
  • java swing での質問です。

    javaのプログラミングをeclipseでしているのですが swingで行き詰ってしまいました。 タブペインを使いタブパネルを作り、その中にボタンを配置したのですが、 ボタンの位置をsetBoundsで動かすことができませんでした。 他の命令を使わなければならないのでしょうか? プログラミング自体が初心者のため、説明に不備があると思いますが 助けていただけると幸いです。 ひどいプログラミングかと思いますが張らせていただきました package gui; import java.awt.*; import javax.swing.*; public class ReisyokuMenu extends JFrame{ /*serialVersionUID*/ private static final long serialVersionUID=1L; /*コンポーネント作成*/ JButton syokuzaiBtn = new JButton("食材一覧"); JButton syoumiBtn = new JButton("賞味期限順"); JButton bunruiBtn = new JButton("分類"); JButton returnBtn=new JButton("Topへ"); JPanel tabPanel1 = new JPanel(); JPanel tabPanel2 = new JPanel(); JTabbedPane tabbedpane = new JTabbedPane(); public ReisyokuMenu(){ /*Closeボタンでアプリケーションが終了しないように設定*/ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); /*フレームサイズを変更できないように設定*/ setResizable(false); /*フレームコンテナのインスタンスを生成*/ Container cPane = getContentPane(); /*レイアウトマネジャを利用しない(座標を指定する)*/ cPane.setLayout(null); setLocationRelativeTo(null); setSize(400, 380);//setBoundsはy、x、幅、高さを指定するのでsetLocationRelativeToで位置指定をする為に使用。 setTitle("一人暮らし支援ツール");//アプリケーションタイトルを入れる tabbedpane.addTab("食材を見る", tabPanel1); tabbedpane.addTab("食材を探す", tabPanel2); tabPanel1.add(syokuzaiBtn); tabPanel1.add(syoumiBtn); tabPanel1.add(bunruiBtn); syokuzaiBtn.setLocation(50, 80);//「選択」ボタン syoumiBtn.setBounds(10,10,325,120); bunruiBtn.setBounds(10,270,90,40); tabPanel2.add(new JLabel("食材名:")); tabPanel2.add(new JTextField("", 10)); setContentPane(tabbedpane); } public void setVisible(boolean isVisible){ if(isVisible){ /*フレームの表示位置を指定(x,y)*/ setLocation(200,200); } /*フレームを表示*/ super.setVisible(isVisible); } }

  • javaでストップウォッチが上手く作れません

    あるサイトを参考にして作ってみたんですが うまく動いてくれません、多分おかしいところだらけですが どこがダメか教えてもらえるとありがたいです package timeP; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class timeC extends JFrame implements Runnable { private JPanel contentPane; private JTextField textField; private Thread th = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { timeC frame = new timeC(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public timeC() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 85); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); JPanel panel_3 = new JPanel(); contentPane.add(panel_3); panel_3.setLayout(new BorderLayout(0, 0)); textField = new JTextField(); panel_3.add(textField, BorderLayout.CENTER); textField.setColumns(10); JPanel panel_2 = new JPanel(); contentPane.add(panel_2); panel_2.setLayout(new BorderLayout(0, 0)); JButton JButtonstart = new JButton(" 開始 "); JButtonstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th == null ) { th = new Thread ( ); th.start(); } } }); panel_2.add(JButtonstart, BorderLayout.CENTER); JPanel panel_1 = new JPanel(); contentPane.add(panel_1); panel_1.setLayout(new BorderLayout(0, 0)); JButton JButtonstop = new JButton(" 停止 "); JButtonstop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th != null ){ th = null; } } }); panel_1.add(JButtonstop, BorderLayout.CENTER); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(new BorderLayout(0, 0)); JButton btnNewButton_2 = new JButton("New button"); panel.add(btnNewButton_2, BorderLayout.CENTER); } @Override public void run() { //TODO 自動生成されたメソッド・スタブ int i; while ( th != null ){ i = Integer.parseInt( textField.getText() ); try { Thread.sleep(10000); if ( th == null ) break; } catch ( InterruptedException e ){ break; } textField.setText( Integer.toString( i + 1 ) ); } } }

  • Jframeの中にJframeを表示させたい

    Jframeの中にボタンを作り、ボタンを押すとJInternalFrameではなくJframeを表示させるようにしたいんですが、なかなかできません。 検索したりしてサンプル探したんですが、 Jframeを表示させ、ラベルを貼ったりしたいんですが どなたかお願いします!! public class Browser extends JFrame{ public static void main(String args[]) { Browser frame = new Browser(); frame.setTitle(""); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); frame.setVisible(true); } //ボタン private JButton bt = new JButton("~~"); public Browser() { bt.addActionListener(this); JToolBar tb = new JToolBar(); tb.setFloatable(false); getContentPane().add(tb, BorderLayout.NORTH); JPanel panel2 = new JPanel(); panel2.add(bt); panel2.setLayout(new FlowLayout(FlowLayout.LEFT)); tb.add(panel2); } //↓この辺りの処理の記述で頭が混乱してきました(泣 public class actionPerformed(ActionEvent e){ if(e.getSource() == bt){ Frame FW = new Frame(); FW.setSize(500,400); FW.setVisible(true); } } class Frame extends Frame{ public Frame(){ //コンストラクタの定義 } }

    • ベストアンサー
    • Java
  • Layoutについて

    TextFiledを縦31、横7でレイアウトしたいのですが、 MyPanel(){ EventHandler eh = new EventHandler(this); JPanel ptext = new JPanel(); JPanel pbtn= new JPanel(); 中略 this.setLayout(new FlowLayout()); this.add(ptext,new FlowLayout(FlowLayout.CENTER,0,0)); this.add(pbtn, BorderLayout.SOUTH); とすると、横一列に表示されるのですが、どうしたら 指定したとおりになるのでしょうか? これは、mainで定義してます。 Container cont = frame.getContentPane(); cont.add(panel); よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのBoxlayoutについて

    下記はBoxLayout用ののコードです。 Q1)Buttonのサイズを設定する方法がありますか? Q2)Buttonの配置を設定する方法がありますか? //===================================== import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.LayoutManager; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class AlignmentX extends JFrame{ JButton button1; JButton button2; JButton button3; public static void main(String[] args){ AlignmentX frame = new AlignmentX(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("タイトル"); frame.setVisible(true); } AlignmentX(){ button1 = new JButton("AAAAA"); button1.setAlignmentY(0.5f); button1.setPreferredSize(new Dimension(80,20)); button2 = new JButton("BBB"); button2.setAlignmentY(0.5f); button2.setPreferredSize(new Dimension(80,20)); button3 = new JButton("CC"); button3.setAlignmentY(0.5f); button3.setPreferredSize(new Dimension(80,20)); JPanel p = new JPanel(); p.setLayout((LayoutManager) new BoxLayout(p, BoxLayout.Y_AXIS)); p.add(button1); p.add(button2); p.add(button3); getContentPane().add(p, BorderLayout.CENTER); setBounds(10, 10, 300, 200); } } //以上,宜しくお願いします。

    • ベストアンサー
    • 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
  • JPanelの重ね方/OverlayLayout他

    添付した画像のような「ピラミッドのように大きいコンポーネントの上にだんだん小さなコンポーネントを重ねていく」のではないコンポーネントの重ね方がしたいです。そのようなことは可能なのでしょうか? やりたいこととしては、メインとなるパネルのその上で別のレイアウトをしたパネルを重ねたいです。 普通のレイアウトマネージャでaddで重ねるのでは、どうやってもうまくいきません。 OverlayLayoutも試してみましたが、以下の二つのパターンではうまくいきませんでした。 注:TopPanel,MainPanel,StringPanelはJPanelを継承した自作のクラスです 理想はMainPanel < StringPanel < TopPanelなのですが・・ JPanel basePanel = new JPanel(); basePanel.setLayout(new OverlayLayout(basePanel)); topPanel = new TopPanel(); topPanel.setOpaque(false); basePanel.add(topPanel); mainPanel = new MainPanel(); mainPanel.setLayout(new BorderLayout()); stringPanel = new StringPanel(); stringPanel.setPrintSpeed(50); stringPanel.setBorder(new BevelBorder(BevelBorder.RAISED)); mainPanel.add("South", stringPanel); basePanel.add(mainPanel); add(basePanel); この場合だと、MainPanel < TopPanel < StringPanelの関係になってしまいます JPanel basePanel = new JPanel(); basePanel.setLayout(new OverlayLayout(basePanel)); mainPanel = new MainPanel(); mainPanel.setLayout(new BorderLayout()); stringPanel = new StringPanel(); stringPanel.setPrintSpeed(50); stringPanel.setBorder(new BevelBorder(BevelBorder.RAISED)); mainPanel.add("South", stringPanel); basePanel.add(mainPanel); topPanel = new TopPanel(); topPanel.setOpaque(false); basePanel.add(topPanel); add(basePanel); こうするとTopPanelの描画が見えなかったのでおそらくTopPanel < MainPanel < StringPanelとなってます。 ご教示願います・・!

  • JAVAでの背景画像表示

    現在javaでゲームのメニュー画面を作っているのですが、ボタンを配置する所まではできたんですが、背景に画像を表示することができなくて困っています! import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; public class Mati extends JFrame{ public static void main(String[] args){ Mati frame = new Mati(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10,650,650); frame.setTitle("街"); frame.setVisible(true); JPanel h = new JPanel(); h.setOpaque(false); ImageIcon icon1 = new ImageIcon("Mati.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); h.add(label1); } Mati(){ JButton button1 = new JButton("宿屋"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button2 = new JButton("道具屋"); button2.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button3 = new JButton("武器屋"); button3.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button4 = new JButton("街を出る"); button4.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); p.add(Box.createRigidArea(new Dimension(10,30))); p.add(button1); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button2); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button3); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button4); getContentPane().add(p, BorderLayout.CENTER); } } ソースはこのようになっています。これからどうすれば背景画像が表示されるか教えていただきたいです。 よろしくお願いします。

  • Swing自作コンポーネントをadd出来るように、

    JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。frame.add(自作のクラスのインスタンス)を可能にしたいです。 調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンス(?)に線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンス(?)に追加する方法はわからず、paintComponent()を使うやり方はできませんでした。 paintComponent()も使わずに、自分のできる方法で、組んだものを一応載せます。 import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class MyComponentTest{ public static void main(String[] args){ JFrame frame = new JFrame("タイトル"); frame.setSize(400, 300); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); // 2つのテキストフィールドと一つのボタンを4つ追加する frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.setVisible(true); } } //2つのテキストフィールドと一つのボタンを一つの部品にしたい class TwoTextFieldsAndOneButton{ JTextField textField1 = new JTextField("テキストフィールド1"); JTextField textField2 = new JTextField("テキストフィールド2"); JButton button = new JButton("ボタン"); // こんなメソッドを使わずに、再現したい JPanel getContent(){ JPanel panel = new JPanel(); panel.add(textField1); panel.add(textField2); panel.add(button); return panel; } }

    • ベストアンサー
    • Java

専門家に質問してみよう