2014-01-09 69 views
1

我需要從方法(而不是構造函數)中設置標題。我試圖做這樣的,但它不工作:在方法上使用setTitle

import javax.swing.*; 
import java.awt.*; 
public class PointGraphWriter extends JPanel 
{ 
    public String title; 

    public void setTitle(String name) 
    { 
     title = name; 
    } 
    public PointGraphWriter() 
    { 
     JFrame frame = new JFrame; 
     int width= 300; 
     frame.setSize(width*3/2,width); 
     frame.setVisible(true); 
     frame.setTitle(title); 
     frame.setBackground(Color.white); 
     frame.getContentPane; 
     frame.add(this); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

與主要方法:

public class TestPlot 
{ 
    public static void main(String[] a) 
    { 
     PointGraphWriter e = new PointGraphWriter(); 
     e.setTitle("Graph of y = x*x"); 
    } 
} 
+2

有了'setTitle',你想改變'title'變量或框架的標題? – rgettman

+0

@rgettman標題變量,然後是該變量的框架標題。 –

+0

rgettman下面的答案完全正確。 – csmckelvey

回答

3

你改變變量title但這並不影響幀。您需要再次在框架上撥打setTitle

保持一個實例變量的框架:

private JFrame frame; 

在構造函數中,指定新的JFrame實例變量,所以你可以在setTitle以後更改它的標題:

public void setTitle(String name) 
{ 
    title = name; 
    frame.setTitle(name); 
} 
+0

非常感謝!它正在工作。 –

0

你有一個方法來改變變量title,這很好。您遇到的問題是您正嘗試在構造函數方法中設置框架的標題。

在此代碼:

PointGraphWriter e = new PointGraphWriter(); 
e.setTitle("Graph of y = x*x"); 

e構造使用setTitle方法來改變title變量在PointGraphWriter之前。因此,您試圖將幀的標題設置爲null字符串,因爲setTitle方法僅在構造方法之後調用。

你可以做兩件事情:

  1. 設置框的標題在setTitle方法:

    JFrame frame = new JFrame; 
    public void setTitle(String name) 
    { 
        frame.setTitle(name); 
    } 
    
  2. 或者你可以改變你的構造函數方法採取在標題爲參數:

    public PointGraphWriter(String title) 
    { 
        JFrame frame = new JFrame; 
        int width= 300; 
        frame.setSize(width*3/2,width); 
        frame.setVisible(true); 
        frame.setTitle(title); 
        frame.setBackground(Color.white); 
        frame.getContentPane; 
        frame.add(this); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
    

    然後創建PointGraphWriter這樣的:

    PointGraphWriter e = new PointGraphWriter("Graph of y = x*x"); 
    
+1

非常感謝您的解釋。這實際上是我必須使用的第一個選項。這是一個學校練習,我必須這樣做(從setTitle()方法),但我不知道我也可以在setTitle()方法中使用frame對象。非常感謝! –

相關問題