我需要从方法(而不是构造函数)设置标题。我尝试这样做,但它不起作用:
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");
}
}
答案 0 :(得分:3)
您更改了变量title
,但这不会影响框架。您需要再次在框架上调用setTitle
。
保留框架的实例变量:
private JFrame frame;
在构造函数中,将新JFrame
分配给实例变量,以便稍后在setTitle
中更改其标题:
public void setTitle(String name)
{
title = name;
frame.setTitle(name);
}
答案 1 :(得分:0)
你有一个改变变量title
的方法,这很好。您遇到的问题是您正在尝试在构造函数方法中设置框架的标题。
在此代码中:
PointGraphWriter e = new PointGraphWriter();
e.setTitle("Graph of y = x*x");
在使用e
方法更改setTitle
类中的title
变量之前 PointGraphWriter
构造。因此,您尝试将框架的标题设置为null
字符串,因为setTitle
方法仅在构造函数方法之后调用。
你可以做两件事:
在setTitle
方法中设置框架的标题:
JFrame frame = new JFrame;
public void setTitle(String name)
{
frame.setTitle(name);
}
或者您可以更改构造函数方法以将标题作为参数:
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");