Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个JLabel的值转移到另一个JLabel_Java_Calculator - Fatal编程技术网

Java 将一个JLabel的值转移到另一个JLabel

Java 将一个JLabel的值转移到另一个JLabel,java,calculator,Java,Calculator,我让这个计算器工作,但我不知道当你点击“完成”按钮时,如何将resultpane中的值放到第一个文本框中 我是Java新手。我试过这么做,但总是出错。我在代码中用// import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Poi

我让这个计算器工作,但我不知道当你点击“完成”按钮时,如何将resultpane中的值放到第一个文本框中

我是Java新手。我试过这么做,但总是出错。我在代码中用//

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import javax.swing.AbstractAction;
import static javax.swing.Action.NAME;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestCalculator {

public static void main(String[] args) {
    new TestCalculator();
}

public TestCalculator() {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            }

            ResultPane resultPane = new ResultPane();

            JFrame frame = new JFrame("Testing");
            frame.setGlassPane(resultPane);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(new CalculatorPane(resultPane));
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);

        }
    });
}

public class ResultPane extends JPanel {

    private JLabel result;
    private Timer timer;

    private int xDelta = (Math.random() > 0.5) ? 1 : -1;
    private int yDelta = (Math.random() > 0.5) ? 1 : -1;

    ;

    public ResultPane() {
        setOpaque(false);
        setLayout(null);
        result = new JLabel();
        Font font = result.getFont();
        font = font.deriveFont(Font.BOLD, 26f);
        result.setFont(font);
        add(result);
        timer = new Timer(40, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Point point = result.getLocation();
                point.x += xDelta;
                point.y += yDelta;
                if (point.x < 0) {
                    point.x = 0;
                    xDelta *= -1;
                } else if (point.x + result.getWidth() > getWidth()) {
                    point.x = getWidth() - result.getWidth();
                    xDelta *= -1;
                }
                if (point.y < 0) {
                    point.y = 0;
                    yDelta *= -1;
                } else if (point.y + result.getHeight() > getHeight()) {
                    point.y = getHeight() - result.getHeight();
                    yDelta *= -1;
                }
                result.setLocation(point);
                repaint();
            }

        });
        timer.start();
    }

    public void setResult(Number number) {
        result.setText("Result: " + NumberFormat.getNumberInstance().format(number));
        result.setSize(result.getPreferredSize());
        setVisible(true);
    }

}

public class CalculatorPane extends JPanel {

    private final ResultPane resultPane;

    private final JLabel firstNumberLabel = new JLabel("First Number:");
    private final JLabel secondNumberLabel = new JLabel("Second Number:");

    private final JTextField firstNumberField = new JTextField(5);
    private final JTextField secondNumberField = new JTextField(5);

    public double result = 0.0;

    public CalculatorPane(ResultPane resultPane) {

        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        this.resultPane = resultPane;

        JPanel fields = new JPanel();
        fields.add(firstNumberLabel);
        fields.add(firstNumberField);
        fields.add(secondNumberLabel);
        fields.add(secondNumberField);

        add(fields, gbc);

        JPanel buttons = new JPanel();
        buttons.add(new JButton(new AddAction()));
        buttons.add(new JButton(new SubtractAction()));
        buttons.add(new JButton(new MultiplyAction()));
        buttons.add(new JButton(new DivideAction()));
        buttons.add(new JButton(new ToText1Action()));

        add(buttons, gbc);

    }

    public class AddAction extends AbstractAction {

        public AddAction() {
            putValue(NAME, "+");
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                double num1 = Double.parseDouble(firstNumberField.getText());
                double num2 = Double.parseDouble(secondNumberField.getText());

                double result = num1 + num2;

                //num1.setResult(firstNumberField);
                resultPane.setResult(result);
            } catch (NumberFormatException exp) {
            }
        }

    }
    public class SubtractAction extends AbstractAction {

        public SubtractAction() {
            putValue(NAME, "-");
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                double num1 = Double.parseDouble(firstNumberField.getText());
                double num2 = Double.parseDouble(secondNumberField.getText());

                double result = num1 - num2;
                resultPane.setResult(result);
            } catch (NumberFormatException exp) {
            }
        }

    }
    public class MultiplyAction extends AbstractAction {

        public MultiplyAction() {
            putValue(NAME, "x");
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                double num1 = Double.parseDouble(firstNumberField.getText());
                double num2 = Double.parseDouble(secondNumberField.getText());

                double result = num1 * num2;
                resultPane.setResult(result);
            } catch (NumberFormatException exp) {
            }
        }

    }
    public class DivideAction extends AbstractAction {

        public DivideAction() {
            putValue(NAME, "/");
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                double num1 = Double.parseDouble(firstNumberField.getText());
                double num2 = Double.parseDouble(secondNumberField.getText());

                double result = num1 / num2;
                resultPane.setResult(result);
            } catch (NumberFormatException exp) {
            }
        }

    }
    public class ToText1Action extends AbstractAction {
        public ToText1Action() {
            putValue(NAME, "Finish");

        }
        @Override
        public void actionPerformed(ActionEvent e) {
            String resultText = resultPane.getResultText(); // = resultPane.getResultText();
                                                            //             ^ error cannot find symbol
            firstNumberField.setText(resultText);
        }
    }
    public String getResultText() {
        result.getText(); //result.getText();
    }                     //      ^ error: double cannot be dereferenced
}   
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Point;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.text.NumberFormat;
导入javax.swing.AbstractAction;
导入静态javax.swing.Action.NAME;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.Timer;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类测试计算器{
公共静态void main(字符串[]args){
新的TestCalculator();
}
公共测试计算器(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
ResultPane ResultPane=新的ResultPane();
JFrame=新JFrame(“测试”);
框。设置玻璃窗格(结果窗格);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
添加(新计算器平面(结果平面));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类ResultPane扩展了JPanel{
私有JLabel结果;
私人定时器;
private int xDelta=(Math.random()>0.5)?1:-1;
private int yDelta=(Math.random()>0.5)?1:-1;
;
公共结果页(){
设置不透明(假);
setLayout(空);
结果=新的JLabel();
Font=result.getFont();
font=font.deriveFont(font.BOLD,26f);
result.setFont(字体);
添加(结果);
计时器=新计时器(40,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
Point=result.getLocation();
点x+=xDelta;
点y+=yDelta;
如果(x点<0){
点x=0;
xDelta*=-1;
}else if(point.x+result.getWidth()>getWidth()){
point.x=getWidth()-result.getWidth();
xDelta*=-1;
}
如果(点y<0){
点y=0;
yDelta*=-1;
}else if(point.y+result.getHeight()>getHeight()){
point.y=getHeight()-result.getHeight();
yDelta*=-1;
}
结果:设置位置(点);
重新油漆();
}
});
timer.start();
}
公共无效设置结果(编号){
result.setText(“结果:+NumberFormat.getNumberInstance().format(number));
result.setSize(result.getPreferredSize());
setVisible(真);
}
}
公共类计算器扩展JPanel{
私人最终结果页结果页;
私有最终JLabel firstNumberLabel=新JLabel(“第一个编号”);
专用最终JLabel secondNumberLabel=新JLabel(“第二个号码:”);
私有最终JTextField firstNumberField=新JTextField(5);
私有最终JTextField secondNumberField=新JTextField(5);
公共双结果=0.0;
公共计算器面板(结果面板结果面板){
setLayout(新的GridBagLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridwidth=GridBagConstraints.rements;
this.resultPane=resultPane;
JPanel字段=新的JPanel();
字段。添加(firstNumberLabel);
字段。添加(firstNumberField);
字段。添加(第二个数字标签);
字段。添加(secondNumberField);
添加(字段,gbc);
JPanel按钮=新的JPanel();
add(newjbutton(newaddaction());
add(newjbutton(newsubtractAction());
添加(新的JButton(新的MultiplyAction());
add(newjbutton(newdivideaction());
添加(新的JButton(新的ToText1Action());
添加(按钮,gbc);
}
公共类AddAction扩展了AbstractAction{
公共行动(){
putValue(名称“+”);
}
@凌驾
已执行的公共无效操作(操作事件e){
试一试{
double num1=double.parseDouble(firstNumberField.getText());
double num2=double.parseDouble(secondNumberField.getText());
双结果=num1+num2;
//num1.设置结果(firstNumberField);
resultPane.setResult(结果);
}捕获(NumberFormatException exp){
}
}
}
公共类动作扩展了抽象动作{
公共行动{
putValue(名称“-”);
}
@凌驾
已执行的公共无效操作(操作事件e){
试一试{
double num1=double.parseDouble(firstNumberField.getText());
double num2=double.parseDouble(secondNumberField.getText());
双结果=num1-num2;
resultPane.setResult(结果);
}捕获(NumberFormatException exp){
}
}
}
公共类MultiplyAction扩展了AbstractAction{
公共多重作用(){
putValue(名称,“x”);
}
@凌驾
已执行的公共无效操作(偶数操作)
 public String getResultText(){
     return ""+result;
 }
public class ResultPane extends JPanel {

private JLabel result;
private Timer timer;

private int xDelta = (Math.random() > 0.5) ? 1 : -1;
private int yDelta = (Math.random() > 0.5) ? 1 : -1;

public ResultPane() {
    setOpaque(false);
    setLayout(null);
    result = new JLabel();
    Font font = result.getFont();
    font = font.deriveFont(Font.BOLD, 26f);
    result.setFont(font);
    add(result);
    timer = new Timer(40, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Point point = result.getLocation();
            point.x += xDelta;
            point.y += yDelta;
            if (point.x < 0) {
                point.x = 0;
                xDelta *= -1;
            } else if (point.x + result.getWidth() > getWidth()) {
                point.x = getWidth() - result.getWidth();
                xDelta *= -1;
            }
            if (point.y < 0) {
                point.y = 0;
                yDelta *= -1;
            } else if (point.y + result.getHeight() > getHeight()) {
                point.y = getHeight() - result.getHeight();
                yDelta *= -1;
            }
            result.setLocation(point);
            repaint();
        }

    });
    timer.start();
}

public void setResult(Number number) {
    result.setText("Result: " + NumberFormat.getNumberInstance().format(number));
    result.setSize(result.getPreferredSize());
    setVisible(true);
}

public String getResultText(){
    return result.getText();
}

}