2016-12-08 10 views
1

赤、緑、青のradiobuttonsのGUIを作成する必要があります。 radiobuttonをクリックすると、フレームの中央のパネルが対応するbackcolourの色に変更されるはずです。以下は私のコードです:私は間違って何をしています。ここでは以下の私のコードです(助けてください;フレームは小さな表示され、何も表示されませんが、それはコンパイルされます):GUI RadioButtonJPanel

あなたがコンポーネントを追加した後、あなたのJFrameを packを忘れたので、おそらくです
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class RadioButtons extends JFrame implements ActionListener { 
    JFrame f; 
    JPanel panel = new JPanel(); 
    JRadioButton rb1, rb2, rb3; 
    JButton b1; 
    JButton b2; 
    JButton b3; 

    public RadioButtons() { 
     f = new JFrame(); 
     rb1 = new JRadioButton("Green"); 
     //rb1 = new JLabel(, JLabel.RIGHT); 
     rb1.setBounds(100, 70, 100, 40); 
     rb2 = new JRadioButton("Red"); 
     rb2.setBounds(100, 90, 100, 40); 
     //rb2 = new JLabel("Red", JLabel.RIGHT); 
     rb3 = new JRadioButton("Blue"); 
     rb3.setBounds(100, 100, 100, 40); 
     //rb3 = new JLabel("Blue", JLabel.RIGHT); 
     ButtonGroup s1 = new ButtonGroup(); 
     s1.add(rb1); 
     s1.add(rb2); 
     s1.add(rb3); 
     this.setSize(400, 400); 
     f.setLayout(null); 
     f.setVisible(true); 
     f.setTitle("GUI Background Changer"); 

     b1 = new JButton("Change background color"); 
     b1.setBounds(200, 200, 50, 50); 
     b1.addActionListener(this); 
     b2 = new JButton("Change background color"); 
     b2.setBounds(200, 200, 50, 50); 
     b2.addActionListener(this); 
     b3 = new JButton("Change background color"); 
     b3.setBounds(200, 200, 50, 50); 
     b3.addActionListener(this); 

     add(rb1); 
     add(rb2); 
     add(rb3); 

     f.add(panel); 

     //x.setDefaultCloseOperation(XFrame.EXIT_ON_CLOSE); 

    }//constructor 

    public static void main(String[] args) { 
     RadioButtons radiobuttons = new RadioButtons(); 
     radiobuttons.setJpanelSize(200, 200, 50, 50);//setJPanelSize(200,200,50,50); 
     radiobuttons.setDefaultCloseOperation(EXIT_ON_CLOSE); 

    }// main 

    public void backgroundChanged(ActionEvent e) { 
     Color initialcolor1 = Color.RED; 
     Color initialcolor2 = Color.BLUE; 
     Color initialcolor3 = Color.GREEN; 
     if (rb1.isSelected()) { 
      panel.setBackground(initialcolor1); 
     }// if 
     else 
      if (rb2.isSelected()) { 
       panel.setBackground(initialcolor2); 
      }// else if 

      else { 
       panel.setBackground(initialcolor2); 
      }// else 
    } 

    public void setJpanelSize(int v, int w, int x, int y) { 

    }// setJPanel size 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

}//class 
+0

[最小限で完全で検証可能な例を作成する方法](http://stackoverflow.com/help/mcve)を参照してください。 – MikeJRamsey56

答えて

1

it compiles but the frame appears tiny and displays nothing):

。コンポーネントを追加した後、フレームにpack()を呼び出します。

またしたくなるでしょう:他のすべてのアクションの後

  1. コールsetVisible(true)を。
  2. ヌルレイアウトを使用しないようにします。
+0

私は通常、JFrameの拡張を控えますが、JPanelにも及んでいます。コンポーネントをJPanelに追加し、カスタマイズしたパネルをJFrameに追加します。 – user3437460

+0

私は、拡張Jpanelとpanel.add(rb1からrb3まで)、pack()とf.setLayout(new BoxLayout(panel、BoxLayout.PAGE_AXIS))を設定して変更を加えました。しかし、今私はエラーRadioButtonsTest.java:87を取得する:エラー:シンボルを見つけることができません \t radiobuttons.setDefaultCloseOperation(EXIT_ON_CLOSE); S.Mban –

+0

あなたはタイプを作ったから。 'setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);' – user3437460