2014-01-11 1 views
0

Этот Java-код использует Swing. Я пытаюсь создать форму, чтобы Swing basic был покрыт в ней. Он имеет ярлык, кнопку, текстовое поле, но переключатель не работает. Пожалуйста, расскажите мне об ошибках. Это потому, что я не добавляю переключатели в панель?Радиоустройства исчезают

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class Swingtrial extends JFrame { 

    final String[] sList 
     = { 
      "JANUARY", 
      "FEBRUARY", 
      "MARCH", 
      "APRIL", 
      "MAY", 
      "JUNE", 
      "JULY", 
      "AUGUST", 
      "SEPTEMBER", 
      "OCTOBER", 
      "NOVEMBER", 
      "DECEMBER",}; 

    public Swingtrial() { 
     callGUI(); 
    } 

    public void callGUI() { 
     int s[]; 
     JPanel panel = new JPanel(); 
     getContentPane().add(panel); 
     setTitle("TRIAL FORM"); 

     panel.setLayout(null); 
     panel.setSize(200, 200); 
     JLabel lab = new JLabel("Name"); 
     lab.setBounds(200, 60, 100, 25); 
     panel.add(lab); 

     JTextField name = new JTextField("first name"); 
     name.setBounds(275, 60, 100, 25); 
     panel.add(name); 

     JTextField name1 = new JTextField("middle name"); 
     name1.setBounds(380, 60, 100, 25); 
     panel.add(name1); 

     JTextField name2 = new JTextField("last name"); 
     name2.setBounds(500, 60, 150, 25); 
     panel.add(name2); 

     JLabel age = new JLabel("Date of Birth"); 
     age.setBounds(200, 100, 150, 25); 
     panel.add(age); 

     JComboBox date = new JComboBox(); 
     date.setBounds(275, 100, 50, 25); 
     date.setBackground(Color.LIGHT_GRAY); 

     panel.add(date); 
     for (int i = 1; i <= 31; i++) { 
      extracted(date, i); 
     } 

     JComboBox drop = new JComboBox(); 
     drop.setBounds(350, 100, 85, 25); 
     drop.setBackground(Color.LIGHT_GRAY); 
     panel.add(drop); 
     for (int iCtr = 0; iCtr < sList.length; iCtr++) { 
      drop.addItem(sList[iCtr]); 
     } 

     JComboBox yr = new JComboBox(); 
     yr.setBounds(455, 100, 80, 25); 
     yr.setBackground(Color.LIGHT_GRAY); 
     panel.add(yr); 
     for (int i = 1900; i <= 2014; i++) { 
      extracted(yr, i); // not understood?????? :( 
     } 

     JLabel add = new JLabel("address"); 

     add.setBounds(200, 150, 100, 25); 
     panel.add(add); 

     JTextField address = new JTextField("Adress"); 
     address.setBounds(280, 150, 200, 40); 
     panel.add(address); 

     JRadioButton male = new JRadioButton("male"); 
     JRadioButton female = new JRadioButton("Female"); 
     ButtonGroup bG = new ButtonGroup(); 
     add(male); 
     bG.add(female); 
     this.setSize(100, 200); 
     this.setLayout(new FlowLayout()); 
     this.add(male); 
     this.add(female); 
     male.setSelected(true); 
     this.setVisible(true); 

     JButton but = new JButton("ommm"); 
     but.setBounds(50, 60, 80, 30); 
     panel.add(but); 
     but.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       System.exit(0); 
      } 
     }); 
    } 

    private void extracted(JComboBox month, int i) { 
     month.addItem(i); 
    } 

    public static void main(String args[]) { 
     Swingtrial mainFrame = new Swingtrial(); 
     mainFrame.setVisible(true); 
    } 
} 
+1

Просто потому, что у вас есть «Запрос о Java» не означает, что тег [tag: jquery] ** ** имеет какое-либо отношение к нему. Пожалуйста, внимательно прочитайте всплывающие подсказки, прежде чем применять их к вопросу. –

+1

Java GUI, возможно, придется работать на нескольких платформах, на разных разрешениях экрана и с использованием разных PLAF. Таким образом, они не способствуют точному размещению компонентов. Чтобы организовать компоненты для надежного графического интерфейса, вместо этого используйте менеджеров компоновки или [их комбинаций] (http://stackoverflow.com/a/5630271/418556), а также макеты и границы для [пробела] (http: //stackoverflow.com/q/17874717/418556). –

+1

BTW - это много кода, чтобы просто получить два флажка на экране. ;) Я понимаю, вы, должно быть, хотите расширить GUI позже с помощью других элементов управления. Но я хотел бы подчеркнуть, что лучше сделать это с помощью макетов. Готовы ли вы предоставить ASCII-искусство (или изображение с простым рисунком) графического интерфейса пользователя, поскольку оно должно появляться в наименьшем размере и (если изменение размера) с дополнительной шириной/высотой, чтобы мы могли показать вам, как это сделать? Это должно быть по отдельному вопросу, так как это задано и ответили, а макет - это отдельный вопрос. –

ответ

3

Добавить male в ButtonGroup:

Ошибка содержится в комментируемой строке:

JRadioButton male = new JRadioButton("male"); 
    JRadioButton female = new JRadioButton("Female"); 
    ButtonGroup bG = new ButtonGroup(); 
    add(male); //this adds the component to the JFrame not the button group 
    bG.add(female); 

И может быть исправлено с помощью:

bG.add(male); 
+0

благодарит за ошибки, но эта ошибка действительно решает мою проблему. – Eager