从frameTest类中删除test_string。使用set方法直接设置test_string。参见示例:
import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.GridLayout;import javax.swing.Jframe;import javax.swing.JPanel;public class Test { public static void main(String[] args) { frameTest1 test_frame = new frameTest1(); test_frame.setContentString("I WANT TO DRAW THIS STRING"); }}class frameTest1 extends Jframe { private static final long serialVersionUID = 1L; Painting painting = new Painting(); public frameTest1() { Jframe gui = new Jframe(); gui.setTitle("Test Title"); gui.setSize(400, 400); gui.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); Container pane = gui.getContentPane(); pane.setLayout(new GridLayout(1, 1)); pane.add(painting); gui.setVisible(true); } public void setContentString(String value) { painting.test_string = value; }}class Painting extends JPanel { private static final long serialVersionUID = 1L; String test_string; public Painting() { setBackground(Color.WHITE); this.test_string = "TEMP STRING FROM PANEL"; } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.drawString(test_string, 20, 20); }}


