假设我有:
class BlaBla{
int x;
int y;
public void actionPerformed(ActionEvent e){
int m1;
int m2;
// algorhythm where i get values for m1 and m2
}
}
如何将 m1
的值分配给 x
并将 m2
的值分配给 y
?
因为我想在另一个类中使用 m1
和 m2
的值?在另一个类中,我有绘画方法,我想使用它们作为绘画的坐标。
谢谢
我的操作按钮将解析 XML 文件。比我需要四个变量来绘制方法,它位于另一个类中
public void actionPerformed(ActionEvent e){
try{
JFileChooser fch = new JFileChooser();
int i = fch.showOpenDialog(null);
if(i==JFileChooser.APPROVE_OPTION){
File f = fch.getSelectedFile();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(f);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("line");
// NodeList nList = doc.getElementsByTagName("point");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
Element line = (Element) nList.item(0);
Element point1 = (Element) line.getElementsByTagName("point").item(0);
Element point2 = (Element) line.getElementsByTagName("point").item(1);
int m1 = Integer.parseInt(point1.getElementsByTagName("X").item(0).getTextContent());
int n1 = Integer.parseInt(point1.getElementsByTagName("Y").item(0).getTextContent());
int m2 = Integer.parseInt(point2.getElementsByTagName("X").item(0).getTextContent());
int n2 = Integer.parseInt(point2.getElementsByTagName("Y").item(0).getTextContent());
我的主要类(class)是:
public class Line {
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("Test");
frame.setLayout(new FlowLayout());
final JPanel pnl = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
Vyber v = new Vyber();
g.drawLine(x1, y1, x2, y2); //values from method from another class
}
最佳答案
为了从一个类获取信息到另一个类,我会避免使用局部变量,而是设置类字段,如下所示:
public class SomeClass {
Point p1;
Point p2;
public void actionPerformed(ActionEvent e) {
// some code....
int m1 = Integer.parseInt(point1.getElementsByTagName("X").item(0).getTextContent());
int n1 = Integer.parseInt(point1.getElementsByTagName("Y").item(0).getTextContent());
int m2 = Integer.parseInt(point2.getElementsByTagName("X").item(0).getTextContent());
int n2 = Integer.parseInt(point2.getElementsByTagName("Y").item(0).getTextContent());
p1 = new Point(m1, n1);
p2 = new Point(m2, n2);
}
public Point getP1() {
return p1;
}
public Point getP2() {
return p2;
}
}
然后,任何对 SomeClass 的正确实例具有有效引用的类,在需要获取 p1 和 p2 的当前副本时,都可以简单地调用 getter 方法。拥有有效的引用是关键,因为您无法重新创建另一个 SomeClass 实例并期望其字段将保存程序正在使用的另一个 SomeClass 实例的值。
如果您想以事件驱动的方式获取信息,如果您想要 p1 和 p2 点,在 actionPerformed 发生后,就会出现更棘手的部分。如果是这样,我将使用 PropertyChangeSupport 实例来允许监听器在这些字段发生更改时收到通知。例如,请查看this answer看看如何做到这一点。
关于java - 从局部变量获取值到类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16886938/