Переключатели не отображаются должным образом - PullRequest
0 голосов
/ 09 января 2020

Всякий раз, когда я запускаю этот код, переключатели отображаются правильно, пока я не переключаюсь или не наводю курсор в окно, тогда он показывает только один из рад ios, и единственный способ увидеть другие - это навести курсор на них.

Почему переключатели не отображаются, пока я не наведу курсор на окно или не нажмем на него вкладку?

    JRadioButton rDollar1 = new JRadioButton("Dollars");
    JRadioButton rCDollar1 = new JRadioButton("Canadian Dollars");
    JRadioButton rMPesos1 = new JRadioButton("Mexican Pesos");
    JRadioButton rCPesos1 = new JRadioButton("Colombian Pesos");


    ButtonGroup bg1 = new ButtonGroup();
    bg1.add(rDollar1);
    bg1.add(rCDollar1);
    bg1.add(rMPesos1);
    bg1.add(rCPesos1);

    frame1.setSize(500, 500);
    frame1.setVisible(true);
    frame1.add(rDollar1);
    frame1.add(rCDollar1);
    frame1.add(rMPesos1);
    frame1.add(rCPesos1);
    rDollar1.setBounds(10, 50, 50, 20);
    rDollar1.setVisible(true);
    rCDollar1.setBounds(10, 100, 50, 20);
    rCDollar1.setVisible(true);
    rMPesos1.setBounds(10, 150, 50, 20);
    rMPesos1.setVisible(true);
    rCPesos1.setBounds(10, 200, 50, 20);
    rCPesos1.setVisible(true);

1 Ответ

1 голос
/ 09 января 2020

Всякий раз, когда я запускаю этот код, переключатели отображаются корректно, пока я не нажимаю или не переключаюсь в окно

Это происходит потому, что когда вы нажимаете вкладку или наводите курсор на переключатели Вы вызываете repaint(), который отвечает за рисование вашего GUI.

. В этом случае странное поведение связано с тем, что у вас есть эта строка:

frame1.setVisible(true);

прежде чем вы добавите все остальные компоненты к JFrame. Но это только начало ваших проблем, так как вы в конечном итоге обнаружите, что другие ошибки, такие как GUI, не отображаются правильно на некоторых других компьютерах, которые вы не использовали для создания программы, и это из-за обращений к setBounds(...), который предполагает, что вы используете null-layout, который является злом и нахмурился Uppon . Вместо этого узнайте, как использовать и смешивать различные менеджеры компоновки , иначе вы окажетесь в ситуации, аналогичной этой

...