Java 其他类中的JButton调用函数
我正在创建一个计时器应用程序。我创建了计时器(毫秒)和接口(使用JFrame)。我想在我的主类“应用程序”中单击bouton“开始按钮”(在类“WindowChrono”)时启动我的chrono(在类“chrono”中) WindowChrono中的启动按钮Java 其他类中的JButton调用函数,java,swing,jbutton,Java,Swing,Jbutton,我正在创建一个计时器应用程序。我创建了计时器(毫秒)和接口(使用JFrame)。我想在我的主类“应用程序”中单击bouton“开始按钮”(在类“WindowChrono”)时启动我的chrono(在类“chrono”中) WindowChrono中的启动按钮 JButton Start_按钮=新JButton(“开始”); 启动按钮。设置前景(颜色。蓝色); Start_button.setFont(新字体(“Tahoma”,Font.PLAIN,20)); 开始按钮。设置背景(新颜色(255、
JButton Start_按钮=新JButton(“开始”);
启动按钮。设置前景(颜色。蓝色);
Start_button.setFont(新字体(“Tahoma”,Font.PLAIN,20));
开始按钮。设置背景(新颜色(255、255、255));
开始按钮。立根(474、456、142、27);
启动按钮。添加ActionListener(新建ActionListener(){
已执行的公共无效操作(操作事件arg0){
如果(i==0){
开始按钮。设置文本(“停止”);
i=1;
}
否则{
开始按钮。设置文本(“开始”);
i=0;
}
}
});
应用程序中的main
公共类应用程序扩展了WindowChrono{
公共void main(字符串[]参数){
WindowChrono window=新的WindowChrono();
run();
计时器=新的计时器();
int刷新时间=10;
Timer.start();//在BOUTON启动时激活LORS DE L
Timer.stop();//LORS DE L ACTIVATION DU BOUTON stop
while(Timer.getStopTime==0){
线程。睡眠(刷新时间);
System.out.println(Timer.actualTime());//将时间固定在时间上
}
System.out.println(Timer.getTime());
}
}
我该怎么做呢?首先,您要显示您的窗口。因此,在您的
main
方法中,您可以将此代码用于启动它:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Application window = new Application(); // Application is a WindowChrono because it extends it
window.setVisible(true);
}
});
它将确保Swing尽快处理窗口的外观(调用器)。所以你不用再担心了
现在,一旦窗口可见,它将接管。所有算法、方法或您执行的任何操作都应该在窗口实例中执行(不再在main
中执行)
因此,您的应用程序
在某个地方有一个构造函数:
public class Application extends WindowChrono{
public Application(){
// your constructor will be executed when you call "new Application()"
}
}
在构造函数中,您可以初始化计时器(不启动它),以便“计时器”实例存在于您的窗口中
private Chrono timer;
public Application(){
this.timer = new Chrono();
}
你的纽扣已经很好看了。现在,您只需要从ActionListener
内部启动/停止计时器:
public void actionPerformed(ActionEvent arg0) {
if(i==0) {
Start_button.setText("Stop");
i = 1;
Application.this.timer.start();
}
else {
Start_button.setText("Start");
i = 0;
Application.this.timer.stop();
}
}
在这个之前提到应用程序
,这对于告诉Java您指的是当前的应用程序
实例(不是ActionListener
的实例)是必要的
您还可以将“actionListener”方法直接放入应用程序中:
public void performButtonAction(int i){
// the code from your action listener
}
然后像这样调用该方法:
Start_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
performButtonAction(i);
}
});
我唯一不清楚的是你的i
来自何处(为什么它是int
而不是boolean
,你不认为这更容易吗?)
哦,还有一件事:变量名应该以小写字母start\u按钮
开头,而不是start\u按钮
。只有类名以大写字母开头。这有助于您保持代码清晰。假设您有这样的情况:Application Application=new Application()
。现在是什么?:)首先要显示窗口。因此,在您的main
方法中,您可以将此代码用于启动它:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Application window = new Application(); // Application is a WindowChrono because it extends it
window.setVisible(true);
}
});
它将确保Swing尽快处理窗口的外观(调用器)。所以你不用再担心了
现在,一旦窗口可见,它将接管。所有算法、方法或您执行的任何操作都应该在窗口实例中执行(不再在main
中执行)
因此,您的应用程序
在某个地方有一个构造函数:
public class Application extends WindowChrono{
public Application(){
// your constructor will be executed when you call "new Application()"
}
}
在构造函数中,您可以初始化计时器(不启动它),以便“计时器”实例存在于您的窗口中
private Chrono timer;
public Application(){
this.timer = new Chrono();
}
你的纽扣已经很好看了。现在,您只需要从ActionListener
内部启动/停止计时器:
public void actionPerformed(ActionEvent arg0) {
if(i==0) {
Start_button.setText("Stop");
i = 1;
Application.this.timer.start();
}
else {
Start_button.setText("Start");
i = 0;
Application.this.timer.stop();
}
}
在这个之前提到应用程序
,这对于告诉Java您指的是当前的应用程序
实例(不是ActionListener
的实例)是必要的
您还可以将“actionListener”方法直接放入应用程序中:
public void performButtonAction(int i){
// the code from your action listener
}
然后像这样调用该方法:
Start_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
performButtonAction(i);
}
});
我唯一不清楚的是你的i
来自何处(为什么它是int
而不是boolean
,你不认为这更容易吗?)
哦,还有一件事:变量名应该以小写字母start\u按钮
开头,而不是start\u按钮
。只有类名以大写字母开头。这有助于您保持代码清晰。假设您有这样的情况:Application Application=new Application()
。现在是什么?:)