我有一个名为three_button和three_button.setText(“Open”)的按钮;
当用户单击按钮时,setVisible(true)命令会打开一个框架。按钮文本更改为关闭。现在,当我再次单击该按钮时,我希望这次关闭框架,因为框架已经可见。代码如下。我尝试在同一个处理程序类中创建另一个处理程序类,但它不起作用。有什么建议吗?
换句话说:
if(frame is visible and open) { the button once pressed should close the frame}
else if (frame is not opened) {the button once pressed should open the frame}
这是我的代码:
thehandler handler = new thehandler();
three_button.addActionListener(handler);
private class thehandler implements ActionListener{ public void
actionPerformed(ActionEvent event){
TabbedPaneExample frame = new TabbedPaneExample();
frame.setVisible(true);
three_button.setText("Close"); }}
答案 0 :(得分:4)
您可以使用Action
。这是一个通用的例子:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Test extends JFrame{
Action actOne = new AbstractAction("One"){
public void actionPerformed(ActionEvent e){
((JButton)e.getSource()).setAction(actTwo);
}
};
Action actTwo = new AbstractAction("Two"){
public void actionPerformed(ActionEvent e){
((JButton)e.getSource()).setAction(actThree);
}
};
Action actThree = new AbstractAction("Three"){
public void actionPerformed(ActionEvent e){
((JButton)e.getSource()).setAction(actOne);
}
};
public Test(){
super("Test");
setLayout(new BorderLayout());
add(new JButton(actOne), BorderLayout.CENTER);
setSize(160,120);
}
public static void main(String[]args){
new Test().show();
}
}
基本上将Action
与按钮相关联时,包括标题,要执行的代码以及可能的助记符和加速器。无论如何,之后切换它们非常容易。
答案 1 :(得分:1)
你有一个包含窗口状态的变量。
用于递增该变量状态的开关盒,在开关中可以应用逻辑?如果已达到最大值,则可以将其设置为1
答案 2 :(得分:0)
怎么样
if(three_botton.getText().equals("Close"))
{
//do close action
}
else if(three_botton.getText().equals("Open"))
{
//do open action
}
else if(three_botton.getText().equals("Other"))
{
//do other action
}