如何在一个类使用另外一个类的变量?

cart55free99 2009-11-16 09:11:21
我希望点一次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);
}
}
}






...全文
143 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cart55free99 2009-11-17
  • 打赏
  • 举报
回复
好了
谢谢大家
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);
}
}
cart55free99 2009-11-17
  • 打赏
  • 举报
回复
提示说Graphics g = new Graphics (); 不能创建实例
bunrise 2009-11-17
  • 打赏
  • 举报
回复
Graphics g = new Graphics ();
你至少创建一个实例啊
cart55free99 2009-11-17
  • 打赏
  • 举报
回复
有新的问题 不知道各位能不能解决?如何用repaint()?
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);
}
}










cart55free99 2009-11-17
  • 打赏
  • 举报
回复
把N写一个get方法
试过了 不知道怎么总是不行
bunrise 2009-11-17
  • 打赏
  • 举报
回复
把N写一个get方法
cart55free99 2009-11-17
  • 打赏
  • 举报
回复

设成public static ?
把谁设成public static?
littlemonster 2009-11-16
  • 打赏
  • 举报
回复
我通常都这么做,也不知道性能上有啥影响。。

[Quote=引用 2 楼 coldanimal 的回复:]
设成public static
[/Quote]
cart55free99 2009-11-16
  • 打赏
  • 举报
回复
怎么做成内部的类啊?不会啊?能把代码送上吗?
ouyangyh 2009-11-16
  • 打赏
  • 举报
回复
建议把JosephP做成 JosepAWT的内部类,或者在给JosephP对像传入一个JosepAWT的对象
老张-AI 2009-11-16
  • 打赏
  • 举报
回复
public:表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 



private:表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用
一头头 2009-11-16
  • 打赏
  • 举报
回复
设成public static
healer_kx 2009-11-16
  • 打赏
  • 举报
回复
这么放肆的事情你也问?
代码下载链接: https://pan.quark.cn/s/37189d21223e STM8S103F3属于STMicroelectronics公司研发的STM8S系列微控制器,该芯片在众多嵌入式系统设计中得到普遍应用,尤其是在对低能耗与高性能有较高要求的场景中。这款微控制器内置8位中央处理器,配备了完整的数字信号处理工具集,涵盖了定时器单元、串行通信端口以及多种外部设备接口。 无线供电方案是基于STM8S103F3构建的,其核心目标在于达成无需物理接触的电能传输。这项技术主要运用电磁感应理论,借助发送端与接收端线圈间磁场的变化来实现能量传递。在无线供电架构中,STM8S103F3通常担任控制核心的角色,负责监督并调节充电环节中的各项指标,以此确保操作安全并提升工作效率。 1. **ADC(模拟数字转换器)**:在无线供电系统中,ADC负责将探测到的电压或电流信号转换为数字形式,使微控制器能够进行解析与操控。例如,它可用于测量接收端线圈的电压值,借此评估充电状况及效能。 2. **PWM(脉宽调制)**:PWM是调控电源输出的常用手段,通过变更脉冲宽度来控制平均功率输出。在无线供电系统中,PWM或许会用于调节发射端功率的输出水平,以应对不同的充电需求及距离差异。借助精准控制PWM信号,能够维持充电电流的稳定,进而保障设备安全进行充电。 3. **软件体系**:无线供电方案可能由多个组成部分构成,例如初始设定、异常识别、通信规约处理等。这些组件通过周密规划的架构协同运作,共同完成无线供电的全部功能。 4. **安全功能**:方案可能集成过温、过压、过流防护机制,一旦侦测到非正常情形,可自动中断电源供应或降低功率输出,以避免设备受损。 5. **通信规约**:无...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧