组件的混合

4.2

<script type=text/babel>
//    定义一个网站导航
    //定义的大组件
    class Webtabs extends React.Component{
        render(){
            return (
                <div>
                    <h1>{this.props.info}</h1>
                    <Href data-href={this.props['data-href']}/>
                </div>//注意使用多个标签的时候需要一个父盒子包裹
            )
        }
    }
    //定义一个子组件
    class Href extends React.Component{
        render(){
            return <a href={this.props['data-href']}>查看</a>
        }
    }
    ReactDOM.render(
        <div>
            <Webtabs info="爱前端" data-href="http://www.aiqianduan.cn"/>
            <Webtabs info="百度" data-href="http://www.baidu.com"/>
            <Webtabs info="淘宝" data-href="http://www.taobao.com"/>
            //使用自定义标签的时候最好加上data-,以防将本身的属性混淆
        </div>
        ,document.querySelector(".box"))
</script>

这里写图片描述

4.3类名的获取

如果要获取标签的类名,使用this.props.className(避讳js的一些关键字);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java AWT 组件可以用来实现一个简单的计算器,支持混合计算。以下是实现的步骤: 1. 创建一个 JFrame 窗口,设置布局为 BorderLayout。 2. 在窗口的顶部添加一个 JTextField 组件,用于显示计算结果。 3. 在窗口的中间添加一个 JPanel 组件,设置布局为 GridLayout,用于放置数字和运算符按钮。 4. 创建数字和运算符按钮,添加到 JPanel 中。 5. 为数字和运算符按钮添加 ActionListener,实现计算器功能。 6. 在 ActionListener 中,根据用户输入的数字和运算符,使用栈来实现混合计算。 7. 将计算结果显示在 JTextField 中。 下面是示例代码: ```java import java.awt.*; import java.awt.event.*; import java.util.Stack; import javax.swing.*; public class Calculator extends JFrame implements ActionListener { private JTextField resultField; private JPanel buttonPanel; private Stack<Double> numStack; private Stack<Character> opStack; public Calculator() { super("Calculator"); // 设置布局为 BorderLayout setLayout(new BorderLayout()); // 添加结果显示组件 resultField = new JTextField(); resultField.setEditable(false); add(resultField, BorderLayout.NORTH); // 添加按钮面板 buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(4, 4)); add(buttonPanel, BorderLayout.CENTER); // 创建数字和运算符按钮 JButton[] buttons = { new JButton("7"), new JButton("8"), new JButton("9"), new JButton("/"), new JButton("4"), new JButton("5"), new JButton("6"), new JButton("*"), new JButton("1"), new JButton("2"), new JButton("3"), new JButton("-"), new JButton("0"), new JButton("."), new JButton("="), new JButton("+") }; // 添加按钮到面板中 for (JButton button : buttons) { buttonPanel.add(button); button.addActionListener(this); } // 初始化栈 numStack = new Stack<>(); opStack = new Stack<>(); // 设置窗口大小和可见性 setSize(300, 300); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.matches("[0-9.]")) { // 处理数字输入 double num = Double.parseDouble(command); numStack.push(num); } else if (command.matches("[+\\-*/]")) { // 处理运算符输入 char op = command.charAt(0); while (!opStack.empty() && priority(op) <= priority(opStack.peek())) { double num2 = numStack.pop(); double num1 = numStack.pop(); char op1 = opStack.pop(); numStack.push(eval(num1, num2, op1)); } opStack.push(op); } else { // 处理等号输入 while (!opStack.empty()) { double num2 = numStack.pop(); double num1 = numStack.pop(); char op = opStack.pop(); numStack.push(eval(num1, num2, op)); } } // 更新结果显示 if (!numStack.empty()) { resultField.setText(numStack.peek().toString()); } } private int priority(char op) { switch (op) { case '+': case '-': return 1; case '*': case '/': return 2; default: return 0; } } private double eval(double num1, double num2, char op) { switch (op) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '/': return num1 / num2; default: return 0; } } public static void main(String[] args) { new Calculator(); } } ``` 这个计算器可以支持混合计算,例如输入 "2+3*4/2",结果会显示为 "8.0"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值