package Topic1;import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;import Topic1.DrageFrame.ButtonAction;public class Test extends javax.swing.JFrame {
private Test outer1 = this;
public Test() {
Init();
}
public void Init() {
JButton jb = new JButton("确定");
jb.addActionListener(new ButtonAction());
this.add(jb);
this.setSize(600,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class ButtonAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
outer1.add(new DrawPanel1());
}
}
public static void main(String [] args){
//创建窗口对象
Test t = new Test();
}
}
class DrawPanel2 extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Polygon po1 = new Polygon();
g.setColor(Color.RED);
int[] X = {0,100,100,0};
int[] Y = {0,0,100,100};
g.drawPolygon(X,Y,4);
g.dispose();
}
}想点击“确定”按钮,画一个设定的四边形,怎么不能出现四边形;错误在哪里,急盼回复!!!
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;import Topic1.DrageFrame.ButtonAction;public class Test extends javax.swing.JFrame {
private Test outer1 = this;
public Test() {
Init();
}
public void Init() {
JButton jb = new JButton("确定");
jb.addActionListener(new ButtonAction());
this.add(jb);
this.setSize(600,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class ButtonAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
outer1.add(new DrawPanel1());
}
}
public static void main(String [] args){
//创建窗口对象
Test t = new Test();
}
}
class DrawPanel2 extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Polygon po1 = new Polygon();
g.setColor(Color.RED);
int[] X = {0,100,100,0};
int[] Y = {0,0,100,100};
g.drawPolygon(X,Y,4);
g.dispose();
}
}想点击“确定”按钮,画一个设定的四边形,怎么不能出现四边形;错误在哪里,急盼回复!!!
public void actionPerformed(ActionEvent e) {
outer1.add(new DrawPanel2());
outer1.validate(); //注意要更新
}
}
其他地方注意提示:
[1]不用费一个变量去存窗体引用, outer1写成Test.this 就可以了, this本来就已经保存在类里面了.
[2]g.dispose(); 不应该被dispose(). 这里的g不是你创建出来, 给系统去处理是安全
[3]g.setColor(Color.RED);
应该
Color c = g.getColor();
g.setColor(Color.RED);
..... //其他操作
g.setColor(c); //还原原来的颜色
这样才是最安全的代码.
this.add(jb, BorderLayout.NORTH);不然都放一块去了,按钮在前,点了以后panel在前。混乱。自己尝试一下。
this.add(jb, BorderLayout.NORTH);只是一种布局。想要什么布局自己更改。