我希望点一次MINUS就能让环上的小圆少一个 但是JosephP又需要用到JosephAwt的变量n 但是怎么用呢?import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;class JosephAwt extends JFrame implements ActionListener{
public JosephAwt(){
add(bu1,BorderLayout.SOUTH);
add(p,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,500);
setVisible(true);
}
int n=8;
/* public int getN(){
return n;
}*/
Graphics g;
JosephP p=new JosephP();
JButton bu1=new JButton("MINUS");
public void actionPerformed(ActionEvent e){
if(e.getSource()==bu1)
n--;
p.paint(g);
}
public static void main(String[] args){
JosephAwt f = new JosephAwt();
}
} class JosephP extends JPanel{
//JosephAwt f = new JosephAwt();
static double PI=3.1415926;
int x=50;
int y=70;
int rbig=150;
int xCenterB=x+rbig;//大圆圆心
int yCenterB=y+rbig;
int rsmall=30;
int xCenterS,yCenterS;
int n=8;//小圆个数
public void paint(Graphics g) {
g.drawOval(x,y,2*rbig,2*rbig);
for(int i=0;i<n;i++){
xCenterS=xCenterB+(int)Math.round(rbig*Math.sin(2*PI*i/n));
yCenterS=yCenterB+(int)Math.round(rbig*Math.cos(2*PI*i/n));
g.setColor(Color.red);
g.drawOval(xCenterS-rsmall, yCenterS-rsmall, 2*rsmall, 2*rsmall);
g.setFont(new Font("",Font.BOLD,23));
g.drawString(""+i,xCenterS,yCenterS);
}
}
}
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;class JosephAwt extends JFrame implements ActionListener{
public JosephAwt(){
add(bu1,BorderLayout.SOUTH);
add(p,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,500);
setVisible(true);
}
int n=8;
/* public int getN(){
return n;
}*/
Graphics g;
JosephP p=new JosephP();
JButton bu1=new JButton("MINUS");
public void actionPerformed(ActionEvent e){
if(e.getSource()==bu1)
n--;
p.paint(g);
}
public static void main(String[] args){
JosephAwt f = new JosephAwt();
}
} class JosephP extends JPanel{
//JosephAwt f = new JosephAwt();
static double PI=3.1415926;
int x=50;
int y=70;
int rbig=150;
int xCenterB=x+rbig;//大圆圆心
int yCenterB=y+rbig;
int rsmall=30;
int xCenterS,yCenterS;
int n=8;//小圆个数
public void paint(Graphics g) {
g.drawOval(x,y,2*rbig,2*rbig);
for(int i=0;i<n;i++){
xCenterS=xCenterB+(int)Math.round(rbig*Math.sin(2*PI*i/n));
yCenterS=yCenterB+(int)Math.round(rbig*Math.cos(2*PI*i/n));
g.setColor(Color.red);
g.drawOval(xCenterS-rsmall, yCenterS-rsmall, 2*rsmall, 2*rsmall);
g.setFont(new Font("",Font.BOLD,23));
g.drawString(""+i,xCenterS,yCenterS);
}
}
}
设成public static ?
把谁设成public static?
试过了 不知道怎么总是不行
import java.awt.*;
import java.awt.event.*;import javax.swing.*;
import javax.swing.event.*;public class JosephAwt extends JPanel { static double PI=3.1415926;
int x=50;
int y=70;
int rbig=150;
int xCenterB=x+rbig;//大圆圆心
int yCenterB=y+rbig;
int rsmall=30;
int xCenterS,yCenterS;
//小圆个数
static int n=8;
public void paint(Graphics g) {
g.drawOval(x,y,2*rbig,2*rbig);
for(int i=0;i<n;i++){
xCenterS=xCenterB+(int)Math.round(rbig*Math.sin(2*PI*i/n));
yCenterS=yCenterB+(int)Math.round(rbig*Math.cos(2*PI*i/n));
g.setColor(Color.red);
g.drawOval(xCenterS-rsmall, yCenterS-rsmall, 2*rsmall, 2*rsmall);
g.setFont(new Font("",Font.BOLD,23));
g.drawString(""+i,xCenterS,yCenterS);
}
}
public static void main(String[] args){
//JosephAwt f1 = new JosephAwt();
Graphics g;
JFrame f=new JFrame();
JButton bu1=new JButton("ss");
JComponent newContentPane = new JosephAwt();
bu1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
n--;
g.repaint();
}
}); //JComponent newContentPane = new JosephAwt();
f.add(bu1,BorderLayout.SOUTH);
f.add(newContentPane,BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,500);
f.setVisible(true);
}
}
你至少创建一个实例啊
谢谢大家
import java.awt.*;
import java.awt.event.*;import javax.swing.*;
import javax.swing.event.*;public class JosephAwt extends Canvas { static double PI=3.1415926;
int x=50;
int y=70;
int rbig=150;
int xCenterB=x+rbig;//大圆圆心
int yCenterB=y+rbig;
int rsmall=30;
int xCenterS,yCenterS;
//小圆个数
static int n=8;
public void paint(Graphics g) {
g.drawOval(x,y,2*rbig,2*rbig);
for(int i=0;i<n;i++){
xCenterS=xCenterB+(int)Math.round(rbig*Math.sin(2*PI*i/n));
yCenterS=yCenterB+(int)Math.round(rbig*Math.cos(2*PI*i/n));
g.setColor(Color.red);
g.drawOval(xCenterS-rsmall, yCenterS-rsmall, 2*rsmall, 2*rsmall);
g.setFont(new Font("",Font.BOLD,23));
g.drawString(""+i,xCenterS,yCenterS);
}
} public static void main(String[] args){
//JosephAwt f1 = new JosephAwt();
Graphics g;
JFrame f=new JFrame();
JButton bu1=new JButton("ss");
final JComponent newContentPane = new JPanel();
final Canvas newCanvas = new JosephAwt();
newCanvas.setSize(400,400);
newContentPane.add(newCanvas);
f.setContentPane(newContentPane);
bu1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
n--;
newContentPane.remove(newCanvas);
newContentPane.add(newCanvas); }
});
//JComponent newCanvas = new JosephAwt();
f.add(bu1,BorderLayout.SOUTH);
f.add(newCanvas,BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,500);
f.setVisible(true);
}
}