猿问

Java - 为什么我的按钮没有显示在面板中?

我正在努力学习Java Swing。现在,我正在制作一个简单的程序,我需要制作一个按钮。我有两个班级:司机和秋千。我创建了按钮并导入javax.swing.JButton并添加了按钮。最后,按钮添加到面板,但我不知道为什么我只得到面板?任何人都可以帮助我吗?这是我的代码:


 import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;


public class Swing extends JFrame {


    private JFrame f;

    private JButton button;

    private JLabel label;

    private JPanel panel; 


    public Swing() {

    }


    public Swing(String titleName) {

        creatButton();

        creatFrame(titleName);

    }


    public void creatButton() {

        JButton btn = new JButton("click me");

        JPanel panel = new JPanel();

        panel.add(btn);

        btn.setBounds(50, 100, 95, 30);

        add(panel);


    }


    private void creatFrame(String title) {

        JFrame f = new JFrame(title);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setVisible(true);

        f.setSize(400, 500);

        f.setLayout(null);


    }


}

public class Driver {

    public static void main (String [] args) {

        new Swing ("calculator");

    }


}



湖上湖
浏览 200回答 2
2回答

MM们

好吧,让我们开始吧……JButton btn = new JButton("click me");JPanel panel = new JPanel();panel.add(btn);btn.setBounds(50, 100, 95, 30);add(panel);你:创建一个按钮创建面板您将按钮添加到面板您将面板添加到框架进而...JFrame f = new JFrame("calculator");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.add(new f.setVisible(true);您创建了一个全新的实例JFrame并显示它,但它没有任何内容?!😱!相反,您应该避免从扩展JFrame或使用JPanel,例如...public class Swing extends JPanel {    private JButton button;    private JLabel label;    public Swing() {        creatButton();        add(button);    }    public void creatButton() {        JButton btn = new JButton("click me");    }}然后您可以创建一个窗口(或其他容器)并将其添加到其中JFrame f = new JFrame(title);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.add(new Swing());f.pack(); f.setLocationRelativeTo(null);f.setVisible(true);作为一般规则,它JFrame是一个非常糟糕的扩展点,它是一个复杂的复合组件并将您锁定在单个用例中。通常,从JPanel为您提供更多灵活性和更少复杂性并且易于重用的东西开始是一个更好的主意。你真的,真的,真的需要避免null布局

阿晨1998

creatFrame 正在创建一个不同于框架本身的新 JFrame(您的 Swing 类扩展 JFrame)。删除该行:JFrame f = new JFrame(title);并调用方法this而不是f.
随时随地看视频慕课网APP

相关分类

Java
我要回答