2017-01-10 17 views
-1

Я пытаюсь создать список дел, которые позволяют вводить текст пользователя в JCheckBox.Как я могу показать текст с пользовательского ввода в столбце с помощью JFrame?

Но есть проблема, которая ничего показывает на JFrame без последней части

getContentPane().add(checkBox3,BorderLayout.EAST);. 

Мой идеальный результат, как это.

□Cleaning 
□Have Dinner with friend 

Как я могу это исправить? Я приложил файл этого кода, поэтому, пожалуйста, проверьте его.

enter image description here

+0

Вы внесли свои компоненты неправильно. Хорошей практикой является вставка JPanel в JFrame. И после этого добавьте компоненты checkBox в JPanel – Andrew

ответ

0

следуют пример кода ....

public class FrameTest extends JFrame{ 

private JCheckBox jb1; 
private JCheckBox jb2; 
private JCheckBox jb3; 
private JCheckBox jb4; 
private JCheckBox jb5; 
private JPanel jPanel1; 

/** 
* Creates new form CheckBoxDinamico 
*/ 
public FrameTest() { 

    setLayout(new GridBagLayout()); 
    setPreferredSize(new Dimension(800, 600)); 
    jPanel1 = new JPanel(); 
    jPanel1.setLayout(new FlowLayout()); 
    add(jPanel1); 

    jb1 = new JCheckBox("Cleaning"); 
    jb2 = new JCheckBox("Have dinner with friend"); 
    jb3 = new JCheckBox("Go sleep by 11pm"); 
    jb4 = new JCheckBox("Wake Up by 6am"); 
    jb5 = new JCheckBox(); 

    try { 

     if(jb5.getText() == null || "".equals(jb5.getText())){ 
      jb5.setText(new Scanner(System.in).nextLine()); 
     } 
     jPanel1.add(jb1); 
     jPanel1.add(jb2); 
     jPanel1.add(jb3); 
     jPanel1.add(jb4); 
     jPanel1.add(jb5); 
    } catch (Exception e) { 
    } 
    pack(); 
} 

public static void main(String args[]) { 
    new FrameTest().setVisible(true); 
}  

}

+0

Спасибо за вашу доброту. Постараюсь это написать. – Shuta

+0

Ваш прием. С уважением. – paulonep

0

Вы установили макет JPanel в GridLayout, а затем добавить элементы, как если вы используете ваш BorderLayout, который является неправильным.

установлен макет вашего JPanel для FlowLayout:

p.setLayout(new FlowLayout()); 

добавить элементы, как так:

getContentPane().add(checkBox1); 
getContentPane().add(checkBox2); 
getContentPane().add(checkBox3); 
+0

Большое вам спасибо за помощь, я постараюсь написать его! – Shuta