Почему в моем Swing GUI не отображаются все добавленные кнопки? - PullRequest
2 голосов
/ 14 октября 2019

Может кто-нибудь сказать, почему мой графический интерфейс Java Swing не отображает все добавленные кнопки на рамке? Это похоже на то, что, когда я добавляю 5 кнопок, тогда отображается только 4, а если 4, то 3.

Пожалуйста, дайте мне знать, в чем проблема с этим.

Я также пытался добавить их напанель, но затем графический интерфейс не отображал ни одной.

package p2;
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Gui extends JFrame {

    public Gui(){
    //Frame 
        JFrame fr=new JFrame("Calculator");
    //Panel
        JPanel p=new  JPanel();
        p.setBounds(10, 10, 200, 200);
        p.setBackground(Color.cyan);
    //Button    
        JButton b1=new JButton("Button 1");
        b1.setBounds(20, 20, 40, 30);
        JButton b2=new JButton("Button 2");
        b2.setBounds(20, 80, 40, 30);

        fr.add(p);
        p.add(b1);p.add(b2);
        fr.setVisible(true);
        fr.setSize(300, 400);
        fr.setLayout(null);

    }



    public static void main(String[] args) {
        new Gui();
    }
}

Ответы [ 2 ]

3 голосов
/ 14 октября 2019

Это из-за следующей строки:

fr.setLayout(null);

Просто удалите ее, и она будет работать.

0 голосов
/ 14 октября 2019

Прежде всего: не используйте «нулевой» макет. Но когда вы используете какой-либо макет, вы должны установить его до добавления какого-либо компонента.

Чтобы решить вашу проблему, вам просто нужно переместиться вверх fr.setLayout(null)

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Gui extends JFrame {

    public Gui() {
        // Frame
        JFrame fr = new JFrame("Calculator");
        // Panel
        JPanel p = new JPanel();
        p.setBounds(10, 10, 200, 200);
        p.setBackground(Color.cyan);
        // Button
        JButton b1 = new JButton("Button 1");
        b1.setBounds(20, 20, 40, 30);
        JButton b2 = new JButton("Button 2");
        b2.setBounds(20, 80, 40, 30);

        fr.setLayout(null); // set layout before adding of components.
        fr.add(p);
        p.add(b1);
        p.add(b2);
        fr.setVisible(true);
        fr.setSize(300, 400);

    }

    public static void main(String[] args) {
        new Gui();
    }
}
...