如何让我的按钮在其他类中可见

Posted

技术标签:

【中文标题】如何让我的按钮在其他类中可见【英文标题】:How can i make my buttons visible in other classes 【发布时间】:2020-12-22 22:34:28 【问题描述】:

我正在为练习编写简单的 d&d 骰子管理器,我想知道如何在他们自己的类之外访问我的按钮:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

class Buttoner extends JPanel
public JButton d4, d6, d8, d12, d20, d100;
Buttoner()
    this.add(d4 = new JButton("d4"));
    this.add(d6 = new JButton("d6"));
    this.add(d8 = new JButton("d8"));
    this.add(d12 = new JButton("d12"));
    this.add(d20 = new JButton("d20"));
    this.add(d100 = new JButton("d100"));



class Framer extends JFrame 
Framer()
    int DEFAULT_WIDTH = 200;
    int DEFAULT_HEIGHT = 140;
    this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    this.setVisible(true);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.setTitle("D&Dice");
    JButton display = new JButton("0");
    display.setEnabled(false);
    this.add(display, BorderLayout.NORTH);



public class DandDice extends Framer 
public static void main(String[] args)

    Buttoner panel = new Buttoner();
    panel.setLayout(new GridLayout(3, 2));
    Framer ramka = new Framer();
   ramka.add(panel, BorderLayout.SOUTH);



我想访问例如 DandDice 类中的 d4

【问题讨论】:

在您的 Buttoner 类中提供一个方法,允许这样做 你能给我样品吗? 你熟悉setter和getter的概念,或者其他方法吗? 【参考方案1】:

与您的问题无关,但:

Buttoner panel = new Buttoner();
panel.setLayout(new GridLayout(3, 2));

应该在将按钮添加到面板之前设置面板的布局管理器。

该逻辑属于 Buttoner 类的构造函数。

我怎样才能在他们自己的班级之外访问我的按钮:

不知道你为什么要这样做。

JFrame 只是一个容纳子组件的容器。在创建框架的类中不应有任何应用程序逻辑。

【讨论】:

因为我想使用 actionPerformed 为每个按钮执行操作,但我不能使用 .getSource,因为 actionPerformed 看不到我的按钮 @Mr.Orange,ActionListener 应该在您创建按钮并将按钮添加到面板的类中定义。这可以通过使用内部类、匿名内部类或 lambdas 来完成。

以上是关于如何让我的按钮在其他类中可见的主要内容,如果未能解决你的问题,请参考以下文章

隐藏其他类的按钮

单击按钮后如何将输入值(TKinter)传递给其他类中的函数并使用传递的值运行函数[重复]

公共方法对同一包中的其他类不可见

当我触摸其他东西时如何让我的 EditText 失去焦点?

如何在我的 UIViewController 类中声明 UIImageView 以便其他类可以使用它?

PyQt:如何在一个类中为其他类“全局化”def?