java awt panel_java – Swing的JPanel不像AWT的Panel吗?前者的...

我正在将一个程序从AWT更改为Swing,正如Java Swing的书第二章所提出的那样,当我从Panel更改为JPanel时,面板就会消失.当我从Button更改为JButton时,不会发生同样的情况.

这似乎是一个错误,因为这样做似乎很简单 – 只需在名称中添加一个额外的J – 但我不确定问题出在哪里 – 我的VM(Sun JDK),我的WM( xmonad)或者我正在编程的方式(Clojure的Java支持).任何的想法?

如前所述,我在Clojure(JDK的类似lisp的语言)中编写它.这是我的代码:

(defn main []

(let [toolbar-frame (Frame. "Toolbar Example (Swing)")

cut-button (JButton. "Cut")

copy-button (JButton. "Copy")

paste-button (JButton. "Paste")

java-button (JButton. "Java")

windows-button (JButton. "Windows")

mac-button (JButton. "Mac")

motif-button (JButton. "Motif")

lnf-panel (JPanel.)

toolbar-panel (Panel.)

print-listener (proxy [ActionListener] []

(actionPerformed [evt]

(.getActionCommand evt)))

]

(.addWindowListener toolbar-frame

(proxy [WindowAdapter] []

(windowClosing [e]

(System/exit 0))))

;(doto windows-button (.addActionListener lnf-listener))

;(doto motif-button (.addActionListener lnf-listener))

;(doto mac-button (.addActionListener lnf-listener))

;(doto java-button (.addActionListener lnf-listener))

(doto cut-button (.addActionListener print-listener))

(doto copy-button (.addActionListener print-listener))

(doto paste-button (.addActionListener print-listener))

(doto lnf-panel

(.add windows-button)

(.add java-button)

(.add mac-button)

(.add motif-button)

(.setLayout (FlowLayout. FlowLayout/LEFT)))

(doto toolbar-panel

(.add cut-button)

(.add copy-button)

(.add paste-button)

(.setLayout (FlowLayout. FlowLayout/LEFT)))

(doto toolbar-frame

(.add toolbar-panel BorderLayout/NORTH)

(.add lnf-panel BorderLayout/SOUTH)

(.setSize 450 250)

(.setVisible true))))

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Java计算器程序,它包括Java AWTSwing类,并使用了数组。 ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame implements ActionListener { private JTextField display; private JButton[] buttons; private String[] buttonLabels = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"}; private double currentVal = 0, previousVal = 0; private String operator = ""; public Calculator() { setTitle("Java Calculator"); setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // Create the display field display = new JTextField(); display.setEditable(false); display.setHorizontalAlignment(JTextField.RIGHT); // Create the buttons buttons = new JButton[buttonLabels.length]; for (int i = 0; i < buttonLabels.length; i++) { buttons[i] = new JButton(buttonLabels[i]); buttons[i].addActionListener(this); } // Add the components to the content pane JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); contentPane.add(display, BorderLayout.NORTH); JPanel buttonPanel = new JPanel(new GridLayout(4, 4, 5, 5)); for (int i = 0; i < buttons.length; i++) { buttonPanel.add(buttons[i]); } contentPane.add(buttonPanel, BorderLayout.CENTER); setContentPane(contentPane); setVisible(true); } public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); switch (label) { case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": display.setText(display.getText() + label); break; case ".": if (display.getText().indexOf(".") == -1) { display.setText(display.getText() + "."); } break; case "+": case "-": case "*": case "/": operator = label; previousVal = Double.parseDouble(display.getText()); display.setText(""); break; case "=": currentVal = Double.parseDouble(display.getText()); switch (operator) { case "+": currentVal += previousVal; break; case "-": currentVal = previousVal - currentVal; break; case "*": currentVal *= previousVal; break; case "/": currentVal = previousVal / currentVal; break; } display.setText(Double.toString(currentVal)); break; } } public static void main(String[] args) { new Calculator(); } } ``` 这个程序使用数组来存储计算器按钮的标签,并使用循环来创建和添加这些按钮。它还使用了两个变量来跟踪先前的值和当前的值,并根据所选操作计算结果。最后,它使用Java AWTSwing类来创建用户界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值