当前位置: 技术问答>java相关
简单语法错误,但百思不得其解。。。。。高手请进!
来源: 互联网 发布时间:2015-09-09
本文导语: 简单语法错误,但百思不得其解 import java.awt.*; import javax.swing.*; import javax.swing.text.*; import java.awt.event.*; public class Multi extends JFrame { JButton b_1; JTextPane pane; public Multi() { super("Multi"); b_1=new JButton("...
简单语法错误,但百思不得其解
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
public class Multi extends JFrame
{
JButton b_1;
JTextPane pane;
public Multi()
{
super("Multi");
b_1=new JButton("b_1");
b_1.addActionListener(new b_1Action());
pane=new JTextPane(); //*******
JPanel panel=new JPanel();
panel.add(b_1);
panel.add(pane);
this.setContentPane(panel);
}
public static class b_1Action implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
SimpleAttributeSet set=new SimpleAttributeSet();
StyleConstants.setFontSize(set,50);
StyledDocument doc=pane.getStyledDocument();
//******* 此处出错!!!
....
}
}
public static void main(String[] args)
{
new Multi().show(true);
}
}
错误显示:d:Program FilesXinox SoftwareJCreator ProMyProjectsMulti.java:31: non-static variable pane cannot be referenced from a static context
StyledDocument doc=pane.getStyledDocument();
这是为什么,怎么改。
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
public class Multi extends JFrame
{
JButton b_1;
JTextPane pane;
public Multi()
{
super("Multi");
b_1=new JButton("b_1");
b_1.addActionListener(new b_1Action());
pane=new JTextPane(); //*******
JPanel panel=new JPanel();
panel.add(b_1);
panel.add(pane);
this.setContentPane(panel);
}
public static class b_1Action implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
SimpleAttributeSet set=new SimpleAttributeSet();
StyleConstants.setFontSize(set,50);
StyledDocument doc=pane.getStyledDocument();
//******* 此处出错!!!
....
}
}
public static void main(String[] args)
{
new Multi().show(true);
}
}
错误显示:d:Program FilesXinox SoftwareJCreator ProMyProjectsMulti.java:31: non-static variable pane cannot be referenced from a static context
StyledDocument doc=pane.getStyledDocument();
这是为什么,怎么改。
|
静态方法中不能引用非静态变量。将pane定义为static就可以了!
|
非静态的变量不能在有静态上下文的地方被引用。
public class b_1Action implements ActionListener
public class b_1Action implements ActionListener
|
也就是说你的pane必须定义为static或者final才行
|
不懂为什么b_1Action为什么要设为静态的?!
将
public static class b_1Action implements ActionListener
改为
public class b_1Action implements ActionListener
就不会有问题了。
因为静态内部类或静态方法中不能引用实例变量!
将
public static class b_1Action implements ActionListener
改为
public class b_1Action implements ActionListener
就不会有问题了。
因为静态内部类或静态方法中不能引用实例变量!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。