2017-12-09 11 views
0
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

public class Gui extends JFrame { 

    JPanel panel1; 
    JMenuBar daysMenu; 
    JMenu[] days; 
    JMenu chestMenu, backMenu, legsMenu, armsMenu, shouldersMenu; 
    JMenuItem[] chest, back, legs, arms, shoulders; 
    JLabel[] abs1, abs2; 

    public Gui() { 
     setResizable(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     // setSize(1000,1000); 
     setTitle("Gym Workout Program"); 
     setLocationRelativeTo(null); 

     days = new JMenu[7]; 
     for (int i = 0; i < days.length; i++) { 
      days[i] = new JMenu(); 
     } 
     days[0].setText("MONDAY"); 
     days[1].setText("TUESDAY"); 
     days[2].setText("WEDNESDAY"); 
     days[3].setText("THURSDAY"); 
     days[4].setText("FRIDAY"); 
     days[5].setText("SATURDAY"); 
     days[6].setText("SUNDAY"); 
     daysMenu = new JMenuBar(); 
     for (JMenu day : days) { 
      daysMenu.add(day); 
     } 
     setJMenuBar(daysMenu); 

     // bodyPartsMenu 
     chestMenu = new JMenu("Chest(1X12,2X10,2X8)"); 
     chest = new JMenuItem[5]; 
     for (int i = 0; i < chest.length; i++) { 
      chest[i] = new JMenuItem(); 
     } 
     chest[0].setText("Bench Press"); 
     chest[1].setText("Incline Press w/ Dumbbells"); 
     chest[2].setText("Chest Flyes w/ Dumbbells 180˚"); 
     chest[3].setText("Pullover w/ Dumbbells"); 
     chest[4].setText("Dips(Reps till failure/3X10)"); 
     for (JMenuItem item : chest) { 
      chestMenu.add(item); 
     } 
     days[0].add(chestMenu); 

     backMenu = new JMenu("Back(1X12,2X10,2X8)"); 
     back = new JMenuItem[4]; 
     for (int i = 0; i < back.length; i++) { 
      back[i] = new JMenuItem(); 
     } 
     back[0].setText("Pullups 3X10 TRYHARD/ Κ.Λ. Front Pulldowns"); 
     back[1].setText("Bend Over Row with Bar"); 
     back[2].setText("Lat Pulldowns"); 
     back[3].setText("Rowing Machine"); 
     for (JMenuItem item : back) { 
      backMenu.add(item); 
     } 
     days[1].add(backMenu); 

     days[2].add("KENO"); 

     legsMenu = new JMenu("Legs (1X12,2X10,2X8)"); 
     legs = new JMenuItem[5]; 
     for (int i = 0; i < legs.length; i++) { 
      legs[i] = new JMenuItem(); 
     } 
     legs[0].setText("Body Squat/Smith Machine/ w/Dumbbells"); 
     legs[1].setText("Leg Extensions Machine"); 
     legs[2].setText("Leg Curls Machine"); 
     legs[3].setText("Leg Press/ Walking Lunges w/ Dumbbells"); 
     legs[4].setText("Calves Machine 4X15"); 
     for (JMenuItem item : legs) { 
      legsMenu.add(item); 
     } 
     days[3].add(legsMenu); 

     armsMenu = new JMenu("Arms (1X12,2X10,2X8)"); 
     arms = new JMenuItem[6]; 
     for (int i = 0; i < arms.length; i++) { 
      arms[i] = new JMenuItem(); 
     } 
     arms[0].setText("Dumbbell Curls w/ twist"); 
     arms[1].setText("Larry Scot"); 
     arms[2].setText("Dumbbell Hammer Curls"); 
     arms[3].setText("SkullCrushers w/ Bar/Dumbbells"); 
     arms[4].setText("Triceps Press Downs"); 
     arms[5].setText("Reverse Triceps Press Downs"); 
     int countSeperator = 0; 
     for (JMenuItem item : arms) { 
      countSeperator++; 
      armsMenu.add(item); 
      if (countSeperator == 3) { 
       armsMenu.addSeparator(); 
      } 
     } 
     days[4].add(armsMenu); 

     shouldersMenu = new JMenu("Shoulders(1X12,2X10,2X8)"); 
     shoulders = new JMenuItem[4]; 
     for (int i = 0; i < shoulders.length; i++) { 
      shoulders[i] = new JMenuItem(); 
     } 
     shoulders[0].setText("Military Press Smith Machine"); 
     shoulders[1].setText("Lateral Raises"); 
     shoulders[2].setText("Shoulder Press Machine"); 
     shoulders[3].setText("Traps"); 
     for (JMenuItem item : shoulders) { 
      shouldersMenu.add(item); 
     } 
     days[5].add(shouldersMenu); 

     days[6].add("KENO"); 

     abs1 = new JLabel[5]; 
     for (int i = 0; i < abs1.length; i++) { 
      abs1[i] = new JLabel(); 
     } 
     abs1[0].setText("Full and Elbow Plank(1min each)"); 
     abs1[1].setText("Both Sides Plank(35-50 sec)"); 
     abs1[2].setText("Knee Up-LsitHold High Bar(1min each)"); 
     abs1[3].setText("HollowBodyHold(2X1min) LowerBackDown"); 
     abs1[4].setText("Wheel(2X8reps)"); 

     abs2 = new JLabel[3]; 
     for (int i = 0; i < abs2.length; i++) { 
      abs2[i] = new JLabel(); 
     } 
     abs2[0].setText("Leg Raises(3X12)"); 
     abs2[1].setText("Knee Raises(3X12)"); 
     abs2[2].setText("Side and Obliques(3X12)"); 

     JLabel abs3 = new JLabel("Free Choice"); 

     JLabel abs = new JLabel("Abs(3/3+ Times/week)"); 
     add(abs, BorderLayout.NORTH); 

     JRadioButton b1 = new JRadioButton("Style 1"); 
     JRadioButton b2 = new JRadioButton("Style 2"); 
     JRadioButton b3 = new JRadioButton("Style 3"); 
     ButtonGroup group = new ButtonGroup(); 
     group.add(b1); 
     group.add(b2); 
     group.add(b3); 
     JPanel panel2 = new JPanel(new GridLayout(0, 1)); 

     b1.addItemListener(new ItemListener() { 
      @Override 
      public void itemStateChanged(ItemEvent e) { 
       if (e.getStateChange() == ItemEvent.SELECTED) { 
        for (JLabel label : abs1) { 
         panel2.add(label); 
        } 
       } 
       if (e.getStateChange() == ItemEvent.DESELECTED) { 
        for (JLabel label : abs1) { 
         panel2.remove(label); 
        } 
       } 
      } 
     }); 
     b2.addItemListener(new ItemListener() { 
      @Override 
      public void itemStateChanged(ItemEvent e) { 
       if (e.getStateChange() == ItemEvent.SELECTED) { 
        for (JLabel label : abs2) { 
         panel2.add(label); 
        } 
       } 
       if (e.getStateChange() == ItemEvent.DESELECTED) { 
        for (JLabel label : abs2) { 
         panel2.remove(label); 
        } 
       } 
      } 
     }); 
     b3.addItemListener(new ItemListener() { 
      @Override 
      public void itemStateChanged(ItemEvent e) { 
       if (e.getStateChange() == ItemEvent.SELECTED) { 
        panel2.add(abs3); 
       } 
       if (e.getStateChange() == ItemEvent.DESELECTED) { 
        panel2.remove(abs3); 
       } 
      } 
     }); 

     add(panel2, BorderLayout.LINE_END); 
     panel1 = new JPanel(new GridLayout(0, 1, 50, 50)); 
     panel1.add(b1); 
     panel1.add(b2); 
     panel1.add(b3); 

     add(panel1, BorderLayout.LINE_START); 
     pack(); 
     setVisible(true); 
    } 
} 

JLabelsとJRadioButtonを使用して「absワークアウト」プログラムを表示しようとしています。JLabelsはウィンドウのサイズ変更後にのみ表示されます

すべてのコンポーネントを追加した後、setVisiblesetVisible(true)の前にパックを使用しましたが、私のウィンドウのサイズを変更しない限り、私のアイテム(abs1またはabs2またはabs3)は表示されません。

私は例えばスタイル1をクリックすると何も起こりませんし、私は私の窓のサイズを変更するならば、すべてが正常に動作するようです。 助けてください?

+0

)(再検証 '追加;'あなたItemListenersのそれぞれに、あなたのスイング指示しますコンポーネントツリーを変更しました。 – VGR

+0

@ VGRは私のために働いてくれてありがとう。 – JJohnarios

答えて

0

コンテナ内のコンポーネントを変更したあと、コンテナの再配置をスケジュールする)(再検証呼び出す必要があります。

0

あなたはパネルからラベルを追加し、削除した後revalidate()メソッドを呼び出す必要があります。あなたのコードは次のようになります。

if(e.getStateChange()==ItemEvent.SELECTED){ 
    for(JLabel label: abs1){ 
     panel2.add(label); 
     revalidate(); 
    } 
} 
if(e.getStateChange()==ItemEvent.DESELECTED){ 
    for(JLabel label: abs1){ 
     panel2.remove(label); 
     revalidate(); 
    } 
} 

EDIT:答えはコメントで言及されたものと類似しており、前の回答:/

+1

revalidateはループの内部ではなく、if文の後に一度呼び出さなければなりません。それを繰り返し呼び出すことは役に立ちませんし、物事を遅くするかもしれません。 – VGR

+0

右!私の悪い。 –

関連する問題