0

我是 Java 初学者,刚刚学习如何为 GUI 编写代码。我担心的是我没有得到能够根据输入函数显示各种逻辑门(AND、OR 等)的部分。我已经编写了布尔简化的代码,现在我要做的就是在逻辑图中显示它。但我真的不知道该怎么做,因为我是 GUI 新手。任何有关此的方向/链接/教程都将非常有帮助。提前谢谢。

4

3 回答 3

1

使用JgraphJUNG来创建一个图形,其中图形的节点是门,之间的链接是电线。这两个库都有很好的布局管理器,所以你的原理图默认看起来不错。

于 2013-12-21T08:13:37.653 回答
1

看看这个例子。所做的是将逻辑与 GUI 分开。BooleanSimplification我使用了一个只有一个方法的类的简单示例。所有该方法确实将两个数字相加并返回结果。

你应该感兴趣的是我所做的只是BooleanExpresson在 GUI 中创建一个类的实例,而我所要做的就是调用它的方法来获取逻辑操作方法。为了使 GUI 更易于管理,这就是您想要的方式。将数据和逻辑与 GUI 分开。

首先你可以看到BooleanSimplification

class BooleanSimplification {

    public BooleanSimplification() {
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }
}

然后是我的 GUI 类。它就是一个简单的计算器,它有两个输入字段和一个结果输入字段和计算按钮

在此处输入图像描述

您可以复制并粘贴以下代码。尝试并按照代码中的注释进行操作

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class TestRun extends JPanel {

    JLabel jlblnum1 = new JLabel("Number1");     // number 1 label
    JLabel jlblnum2 = new JLabel("Number2");     // number 2 label
    JLabel jlblresult= new JLabel("result");     // result label

    JTextField jtfnum1 = new JTextField(10);     // number1 text field
    JTextField jtfnum2 = new JTextField(10);     // number 2 text field
    JTextField jtfresult = new JTextField(10);   // result text field

    JButton getResult = new JButton("Get Result");   // get result button

    // instance of class here
    BooleanSimplification bs = new BooleanSimplification();  // the class

    public TestRun() {
        JPanel panel = new JPanel(new GridLayout(3, 2));  // panel to hold components
        panel.add(jlblnum1);
        panel.add(jtfnum1);
        panel.add(jlblnum2);
        panel.add(jtfnum2);
        panel.add(jlblresult);
        panel.add(jtfresult);

        setLayout(new BorderLayout());
        add(panel, BorderLayout.CENTER);
        add(getResult, BorderLayout.SOUTH);

        // here is where everything goes on.
        getResult.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                double num1 = Double.parseDouble(jtfnum1.getText());  // get number from text field
                double num2 = Double.parseDouble(jtfnum2.getText());  // get number from text field

                double result = bs.add(num1, num2);  // call the method from the BooleanSimplification class to handle my logic

                jtfresult.setText(String.valueOf(result));  // set the text of result with the result from the method

            }
        });
    }

    public static void createAndShowGui() {
        JFrame frame = new JFrame();
        frame.add(new TestRun());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }

}

class BooleanSimplification {

    public BooleanSimplification() {
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }
}

一旦你创建了一个类的实例,你就可以在 GUI 中使用它的所有数据和方法

于 2013-12-21T09:07:32.877 回答
1

使用摆动。学起来并不难。Netbeans 内置了 swing gui 构建器。你可以用那个。http://docs.oracle.com/javase/tutorial/uiswing/

于 2013-12-21T09:44:45.197 回答