我想为自己编写一个模拟确定性有限自动机(比如jflap)的小工具。我的 JFrame 只是一片空白。如何让用户在左键单击时放置按钮?以及如何为按钮分配正确的值(比如按下时调用哪个函数)。我知道我可以用
JFrame
JButton button = new JButton("Press me"); frame.add(button);
但我不知道如何动态地编写代码。欢迎任何帮助。如果你认为用按钮解决我的问题是愚蠢的,我想听听改进的建议。
gcuhipw91#
下面的代码将添加 JButton 变成“空白” JFrame 每次鼠标在 JFrame . 这个 JButton 将放置在发生鼠标单击的位置。这个 JButton 文本将是一个数字。每个 JButton 将显示不同的数字。
JButton
import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; public class AdButton extends MouseAdapter implements Runnable { private int counter; private JFrame frame; private JPanel contentPane; public void mouseClicked(MouseEvent event) { int x = event.getX(); int y = event.getY(); JButton button = new JButton(String.valueOf(++counter)); Dimension dim = button.getPreferredSize(); button.setBounds(x, y, dim.width, dim.height); contentPane.add(button); contentPane.revalidate(); contentPane.repaint(); } @Override public void run() { showGui(); } private void showGui() { frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); contentPane = (JPanel) frame.getContentPane(); contentPane.setLayout(null); contentPane.addMouseListener(this); frame.setSize(400, 450); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new AdButton()); } }
1条答案
按热度按时间gcuhipw91#
下面的代码将添加
JButton
变成“空白”JFrame
每次鼠标在JFrame
. 这个JButton
将放置在发生鼠标单击的位置。这个JButton
文本将是一个数字。每个JButton
将显示不同的数字。