Java 如何使按钮实际出现在屏幕上?

Java 如何使按钮实际出现在屏幕上?,java,button,awt,Java,Button,Awt,我是一名编程新手,目前我被困在一个小问题上。我自己查阅了如何创建一个按钮,如何使用所有的方法,还有什么没有,但我感到困惑的是,如何让按钮真正出现在屏幕上。这可能是非常简单的事情,我只是不明白。有人能帮我吗?我已经创建了3个按钮` Button balance = new Button("Check Balance"); Button deposit = new Button("Deposit"); Button withdraw = new Button("Withdraw"); System

我是一名编程新手,目前我被困在一个小问题上。我自己查阅了如何创建一个按钮,如何使用所有的方法,还有什么没有,但我感到困惑的是,如何让按钮真正出现在屏幕上。这可能是非常简单的事情,我只是不明白。有人能帮我吗?我已经创建了3个按钮`

Button balance = new Button("Check Balance");
Button deposit = new Button("Deposit");
Button withdraw = new Button("Withdraw");

System.out.println("1. " + balance.getLabel());
System.out.println("2. " + deposit.getLabel());
System.out.println("3. " + withdraw.getLabel());
System.out.print("What would you like to do? ");
我只是对如何让按钮出现在屏幕上感到困惑!谢谢。

你需要

使用Swing,而不是AWT 因此,创建Swing JButton对象,而不是Button。 创建一个JPanel,在JPanel中添加JButtons 在显示JFrame之前,将JPanel添加到JFrame中 你只是在猜测,这根本不起作用。请阅读,因为这是所有解释那里。
这些按钮必须放在一个框架上。简而言之,JFrame是用于JavaSwing应用程序的基本容器或窗口。 公共类按钮示例{

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JFrame frame = new JFrame();
            JButton balance = new JButton("Check Balance");
            JButton deposit = new JButton("Deposit");
            JButton withdraw = new JButton("Withdraw");

            frame.setLayout(new FlowLayout());
            frame.add(balance);
            frame.add(deposit);
            frame.add(withdraw);

            frame.setVisible(true);
        }
    });
}

}

这里有一个丑陋但简单的方法-

public static void main(String[] args) {
    JButton balance = new JButton("Check Balance");
    JButton deposit = new JButton("Deposit");
    JButton withdraw = new JButton("Withdraw");
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(balance, BorderLayout.WEST);
    panel.add(withdraw, BorderLayout.EAST);
    panel.add(deposit, BorderLayout.CENTER);
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

如果有一个父容器,则将此按钮添加到其中,比如panel.add。您的新手气度非常突出。没关系,但你的问题比这里能解决的问题更大。为什么不搜索一个简单的GUI教程。为了更快地获得更好的帮助,发布一个.3,4是为了一个特殊的原因,必须在JPanel中@nachokk:如果他将按钮直接添加到他的JFrame,默认情况下使用BorderLayout,而不使用常量,他将只显示最后添加的按钮。JPanel至少在默认情况下使用了FlowLayout,这对他的目的来说可能更好。回答不错:我只是想知道为什么要将它添加到面板中+1@nachokk不扩展JFrame背后的逻辑是什么?组成重于继承?我只是好奇,我来自J2EE世界,刚刚开始更深入地研究Swing。不是你的底层投票者,但是没有必要扩展,因为你只是在使用普通的JFrame。您可以在main方法中用JFrame替换ButtonExample,这样就行了。扩展JFrame只是让人困惑,它不是J2EE或Swing,而是OOP。你有什么理由扩展JFrame吗?你有什么事吗?你给它更多的功能吗?这不是组合而不是继承,因为您不必拥有任何属性。@HovercraftFullOfEels谢谢您的解释。我不担心落选,我从落选中学到的东西比落选多。为了赢得我的落选,请用SwingUtilities.invokeLaternew Runnable。。通过这种方式,您可以确保在EDT中运行。