gpt4 book ai didi

java - 从一个类中更改另一个类中的变量

转载 作者:行者123 更新时间:2023-12-02 07:44:25 25 4
gpt4 key购买 nike

FNAKLNFDKA.java

import java.awt.*;
import javax.swing.*;

public class GraphApplet extends JApplet{

private static final long serialVersionUID = 1L;
public static Graphics p;

public void init(){

SwingUtilities.invokeLater(new Runnable() {
public void run() {


});
}
}

FANKJ.java

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

class FASKHF extends JPanel {


public static Graphics p;
private static final long serialVersionUID = 1L;

public Graph(){
this.setBackground(Color.yellow);
}

@Override
public Dimension getPreferredSize()
{
return (new Dimension(560,560));
}

public static void updateGraph() {


repaint();
}



public void paint(Graphics F) {



//line co-ordinates
//the numbers represent the number of boxes on the graph
//1st line on the l/h side
int xstart1 = 2;
int ystart1 = 3;

int xfinish1 = 1;
int yfinish1 = 9;

//2nd line on the r/h side
int xstart2 = 8;
int ystart2 = 3;

int xfinish2 = 9;
int yfinish2 = 9;

//drawing upper arc
int arcX = 2;
int arcY = 1;
int imagRectWid = 6;
int imagRectHei = 4;
int startAngle = 0;
int arcAngle = 180;

//other



f = xaxis22;
g = xaxis11;

//to be assigned later.
//the values of xaxis and yaxis need to be separated
//yaxis3 = 5;
//yaxis4 = -5;

//change -ve num to +ve
int g3 = Math.abs(g);

int a1 = g3 + f;
int b1 = a1;

int d = (appletWidth / a1);
int e = (Height / b1);

/**
to determine the
ammount of pixles there
is in each box of the
graph, both y-axis and
x-axis
*/
int xbox = x1 / 10;
int ybox = y1 / 10;

//line variables
//the xstart, ystart, etc represent the number of boxes

//top point of the line on the graph
px1 = xbox * xstart1;//start x
py1 = ybox * ystart1;//start y

//lowwer point of the line on the graph
px = xbox * xfinish1;//finish x
py = ybox * yfinish1;//finish y

//other line on the right hand side
p2x = xbox * xstart2;
p2y = ybox * ystart2;

p2x2 = xbox * xfinish2;
p2y2 = ybox * yfinish2;

//drawing arc
int arcBoxX = arcX * xbox;
int arcBoxY = arcY * ybox;
int arcBoxWidth = imagRectWid * xbox;
int arcBoxHeight = imagRectHei * ybox;


//draw y-axis numbers
//(+ve)
while(f != 0){
String s = String.valueOf(f);
p.drawString(s,(x + 5),m + 13);
m = m + b;
f = f - 1;
}
//(-ve)
m2 = y;
while(f2 != g-1){
String u = String.valueOf(f2);
p.drawString(u,(x + 5),m2 - 3);
m2 = m2 + b;
f2 = f2 - 1;
}
//draw x-axis numbers.
//(-ve)
while(g != 0){
String t = String.valueOf(g);
p.drawString(t,n,y - 5);
n = n + a;
g = g + 1;
}
//(+ve)
n2 = x + a;
while(g2 != g3+1){
String vw = String.valueOf(g2);
p.drawString(vw,n2 -10,y - 5);
n2 = n2 + a;
g2 = g2 + 1;
}

BasicStroke aLine2 = new BasicStroke(1.0F,
BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
graph.setStroke(aLine2);

//notch on numbers and grid lines
//left to right, top to bottom notches
int v2 = -5;
int v5 = 0;
while(i <= a1-1){

p.drawLine(Da,0,Ea,y1);
a = a + d;
b = b + e;
i = i + 1;
}
//notches
while(i2 <= a1){
p.setColor(Color.blue);//notch color
p.drawString("x",v2+2,y+3);//xaxis
p.drawString("x",x-4,v5+4);//yaxis
v5 = v5 + e;
v2 = v2 + d;
i2 = i2 + 1;
}


}
}
}




import java.awt.*;
import javax.swing.*;


}
}



/*
* this code is to accept a user input in order for him to
* change the ranges of the xaxis and yaxis to his needs
*/

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class ControlsB extends JPanel{

private static final long serialVersionUID = 1L;
public static int xaxis1,xaxis2,yaxis3,yaxis4;

//public int xaxis11,xaxis22,yaxis33,yaxis44;
//public Object ControlsB;
//private Graph graph;
//public static Graphics p;
public String s;

public ControlsB(Box box2) {

JButton btn1 = new JButton("Resize");

final Box b = Box.createHorizontalBox();
b.add(new JLabel("Please enter range: "));
Box b0 = Box.createVerticalBox();//create a vertical box to stack the controls

Box b1 = Box.createHorizontalBox(); // create a horizontal box for the x-axis

//x-axis
b1.add(new JLabel("x-axis "));
b1.add(new JLabel("from"));

final JTextField f1 = new JTextField(" 0");

f1.setMaximumSize(new Dimension(100,30));


b.add(btn1);
}

protected Object Integer(int xaxis12) {
return null;
}
}

现在这个程序的问题是;在 ControlsB 中,我有一种方法将控件放置在底部(在黄色框/图形下方),现在这些控件应该接受 x 轴线上的图形范围(x -axis 仅目前,因为 y 轴的代码尚未准备好)。当用户按下“调整大小”按钮时,图表应该显示更改。

但是这并没有发生,并且按钮被无缘无故地按下......我不知道我出了什么问题。

ControlsB 文件中,我有一个 btn1 的 Action 监听器,即“调整大小”按钮,并且按下底部后立即它将文本字段输入(f1 和 f2)更改为整数并分配给 x 轴 1、x 轴 2 等...

现在,我使用以下行从这些变量(在操作监听器方法中找到)对类 Graph.java 进行引用:public static int xaxis11 = ControlsB.xaxis1;

任何人都可以告诉我这个问题的最佳解决方案是什么..??..

注意:所有这些文件都可以编译。但图表没有出现。

最佳答案

按照当前的编码方式,您分配的是 xaxis11xaxis22yaxis33yaxis44 > 仅一次。当变量在 ControlsB 中发生更改时,它们不会动态更新。这意味着您只需在每次值更改时更新它们即可。为此,请向您的 Graph 类添加一个方法:

public static void updateGraph() {
xaxis11 = ControlsB.xaxis1;
xaxis22 = ControlsB.xaxis2;
yaxis33 = ControlsB.yaxis3;
yaxis44 = ControlsB.yaxis4;
}

然后,当用户更改 ControlsB 中的值时,调用 Graph.update()。确保发生这种情况时您也调用了 repaint。

另请注意,将所有这些内容设为静态并不是您唯一的选择。您还可以简单地将对象的引用作为另一个类的字段,在构造函数中设置它,并在必要时调用它的方法。由于这个问题,您的实现可能会遇到一些问题,因为将所有内容设为静态可能会影响您在对象上调用 repaint() 的能力,而您需要执行此操作才能更新它。

解决该问题的方法是将 repaint() 添加到我上面概述的 updateGraph 方法的底部。

关于java - 从一个类中更改另一个类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com