Java 如何使我的按钮在其他类中可见
我正在编写用于练习的简单d&d骰子管理器,我想知道如何在自己的类之外访问我的按钮:Java 如何使我的按钮在其他类中可见,java,swing,jframe,awt,jbutton,Java,Swing,Jframe,Awt,Jbutton,我正在编写用于练习的简单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(){ thi
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 panel = new Buttoner();
panel.setLayout(new GridLayout(3, 2));
在将按钮添加到面板之前,应设置面板的布局管理器
该逻辑属于Buttoner类的构造函数
我如何在自己的类之外访问我的按钮:
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);
}
}
我不知道你为什么要这么做
JFrame只是一个容纳子组件的容器。在创建框架的类中不应包含任何应用程序逻辑。在Buttoner类中提供一个方法,允许使用该方法。您可以给我一个示例吗?您熟悉setter和getter的概念,或者任何其他方法吗?因为我想使用actionPerformed对每个Button执行操作,但我不能使用。getSource,couse没有看到我的buttons@Mr.Orange,应该在创建按钮并将按钮添加到面板的类中定义ActionListener。这可以通过使用内部类、内部类或lambda来实现。