java - 从局部变量获取值到类变量

标签 java swing

假设我有:

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

因为我想在另一个类中使用 m1m2 的值?在另一个类中,我有绘画方法,我想使用它们作为绘画的坐标。

谢谢

我的操作按钮将解析 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/

相关文章:

java - 如何将忙碌光标添加到应用程序中的每个事件

java - tomcat jsp容器中将jsp代码转换为servlet代码的类是什么?

java - 使用 JFileChooser 保存文件

java - 在鼠标上次所在的位置制作一个JLabel?

java - 如何从 Java 中用户填写的 JTable 中提取数据

java - 如何创建 JButton 数组?

java - 如何实现 pow(double x, double y)?

Java从服务器获取数据库连接

java - 编写一个程序来搜索数组以找到第一个奇数

java - 如何给出文件的相对路径?