2011-04-16 22 views
0

我无法在Handler内部达到我的标题。我的代码我如何在Handler内部达到框架标题

例子:

public Frame extends JFrame { 

public Frame() { 
    super("Frame 1"); 
     . 
     . 
     . 

需要有我的GUI一个按钮,只要你点击它,它需要的标题从第1帧切换到第2帧,反之亦然。

ButtonHandler handler = new ButtonHandler(); 
     . 
     . 
     . 
} 
class ButtonHandler implements ActionListener { 
    public void actionPerformed(ActionEvent event) { 
      JButton but = (JButton) event.getSource(); 
      if (??.getTitle(equals("Frame 1"))) { 
       setTitle("Frame 2"); 
      } else { 
       setTitle("Frame 1"); 
      } 

所以每次点击按钮,它所做的就是其他部分。我不能使用的getTitle里面我如果:/

回答

2

首先,它应该读

if (??.getTitle().equals("Frame 1")) 

否则你打电话equalsButtonHandler实例,只是测试,如果这个实例等于字符串"Frame 1" ..

然后,我会添加一个构造函数到ButtonHandler,它需要一个框架实例并将其存储在内部。我的建议总共:

class ButtonHandler implements ActionListener { 
    private JFrame frame; 
    public ButtonHandler(JFrame frame) { 
    this.frame = frame; 
    } 

    public void actionPerformed(ActionEvent event) { 
    JButton but = (JButton) event.getSource(); 
    if (frame.getTitle().equals("Frame 1")) { 
     setTitle("Frame 2"); 
    } else { 
     setTitle("Frame 1"); 
    } 
    } 
} 
+0

当我写if(frame.getTitle(等于“Frame 1”)))它说; 类型框架中的方法getTitle()不适用于参数(布尔值) 我不知道我在哪里布尔值。 – 2011-04-16 16:57:32

+0

@osmancan:equals(..)返回一个布尔值,并且不要将其作为参数传递。而getTitle()方法应该没有参数。 – 2011-04-16 17:04:58

+0

我想要做的是,在我的条件下,我希望它得到标题,并检查它是否等于“第1帧”,并将其更改为“第2帧”,反之亦然。但我似乎无法管理它:| – 2011-04-16 17:11:34