我在 Java 中使用 swing,我需要创建一个 JButton 并将其放入 JPanel 中。
我查阅了教程,并且做到了这一点:
public void crearNuevaMiga(String nombre)
{
JButton nuevo = new JButton(nombre);
this.MigasDePan.add(nuevo);
nuevo.setVisible(true);
nuevo.setLocation(new Point(migaX, migaY));
System.out.println(nuevo.getLocation().x + " "+ nuevo.getLocation().y);
migaX = migaX-avanceMigas;
}
我这样做了,当我调用该函数时,我看不到按钮。我在 NetBeans 设计器上放置了一个按钮并获取 X 和 Y 位置。然后,在变量 migaX 和 migaY 中我放置了 X 和 Y 位置,因此按钮需要位于相同的位置,但它不在那里。
有人知道为什么吗?也许这样放置位置不正确?
感谢您的宝贵时间!
编辑:MigasDePan 是我的 JPanel
最佳答案
下面是一个简单的示例,将 JButton 放入 JPanel 中,并将 JPanel 放入 JFrame 中。我在没有使用任何 GUI 构建器的情况下创建了这段代码。
我在main方法中调用了SwingUtilities的invokeLater方法,将Swing组件的创建和使用放在Event Dispatch thread上。 Oracle 和我坚持要求您在事件调度线程上启动每个 Swing 应用程序。
我使用了 JFrame。您必须按照在 run 方法中调用 JFrame 方法的顺序来调用它们。
我使用了 JPanel。我将 JButton 放在 JPanel 的中间,因为它是 JPanel 上的唯一组件。
我使用了 Swing layout ,边框布局。不同的Swing布局用于创建不同的Swing组件布局。
这是简短的、独立的、可运行代码。
package com.ggl.testing;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class MyButton implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new MyButton());
}
@Override
public void run() {
JFrame frame = new JFrame("My Button");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createMainPanel());
frame.pack();
frame.setVisible(true);
}
private JPanel createMainPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JButton myButton = new JButton("My Button");
panel.add(myButton);
return panel;
}
}
关于java - 在 JPanel 中插入按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253452/