Как запрограммировать одну и ту же кнопку для выполнения двух задач?
У меня есть кнопка с именем three_button и three_button.setText("Открыть");
Когда пользователь нажимает кнопку, фрейм открывается командой 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"); }}
3 ответа
Ты можешь использовать 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
Как насчет
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
}