簡體   English   中英

Applet不顯示,但也沒有錯誤

[英]Applet does not display, but no errors either

我正在嘗試為我的課程項目創建這個程序。 編譯器表示進程已完成但在我嘗試運行時沒有顯示任何內容。

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class Project extends Applet implements ActionListener {

    Label sp = new Label("Receipt Calculator");
    Panel pl = new Panel();
    Label cndy = new Label("Candy:");
    TextField cndyi = new TextField(5);
    Label bred = new Label("Bread:");
    TextField bredi = new TextField(5);
    Label sop = new Label("Soap:");
    TextField sopi = new TextField(5);
    Label mlk = new Label("Milk:");
    TextField mlki = new TextField(5);
    Label ham = new Label("Ham:");
    TextField hami = new TextField(5);
    Label srdns = new Label("Sardines:");
    TextField srdnsi = new TextField(5);
    Label cfee = new Label("Coffee:");
    TextField cfeei = new TextField(5);
    Label ndls = new Label("Noodles:");
    TextField ndlsi = new TextField(5);
    Label salt = new Label("Salt:");
    TextField salti = new TextField(5);
    Label btrs = new Label("Batteries:");
    TextField btrsi = new TextField(5);
    Button co = new Button("Compute Price");
    Panel pnl = new Panel();
    Label st = new Label("");
    Label tx = new Label("");
    Label t = new Label("");

    public void init() {
        setLayout(new GridLayout(2, 2));
        setBackground(Color.blue);

        add(sp);
        add(pl);

        pl.setLayout(new GridLayout(11, 2));

        pl.add(cndy);
        pl.add(cndyi);
        pl.add(bred);
        pl.add(bredi);
        pl.add(sop);
        pl.add(sopi);
        pl.add(mlk);
        pl.add(mlki);
        pl.add(ham);
        pl.add(hami);
        pl.add(srdns);
        pl.add(srdnsi);
        pl.add(cfee);
        pl.add(cfeei);
        pl.add(ndls);
        pl.add(ndlsi);
        pl.add(salt);
        pl.add(salti);
        pl.add(btrs);
        pl.add(btrsi);
        add(co);
        co.addActionListener(this);
        add(pnl);
        pnl.setLayout(new GridLayout(3, 2));
        pnl.add(st);
        pnl.add(tx);
        pnl.add(t);
    }

    public void actionPerformed(ActionEvent z) {
        int a, b, c, d, e, f, g, h, i, j;
        double nst, ntx, nt;
        a = Integer.parseInt(cndyi.getText());
        b = Integer.parseInt(bredi.getText());
        c = Integer.parseInt(sopi.getText());
        d = Integer.parseInt(mlki.getText());
        e = Integer.parseInt(hami.getText());
        f = Integer.parseInt(srdnsi.getText());
        g = Integer.parseInt(cfeei.getText());
        h = Integer.parseInt(ndlsi.getText());
        i = Integer.parseInt(salti.getText());
        j = Integer.parseInt(btrsi.getText());

        nst = (a * 31.50) + (b * 35) + (c * 25) + 
              (d * 38.85) + (e * 43.15) + (f * 13) + 
              (g * 39) + (h * 7) + (i * 10) + (j * 30);
        ntx = nst + (nst * .12);

        nt = nst + ntx;
        st.setText("Sub-total = " + nst);
        tx.setText("Sub-total = " + ntx);
        t.setText("Sub-total = " + nt);
    }

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

嘗試將所有面板放在框架中。 嘗試使用本教程。 http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html這是用於顯示所有內容並使其可見的窗口。

這對我來說似乎是一個功課問題。 問題是你沒有什么可以運行的。

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

所有這一切都是創建一個新對象,但在此之后程序終止:你需要一個循環。

試試本教程: 構建您的第一個Java小程序

當我嘗試運行它時沒有顯示任何內容

那是因為你沒有要求任何東西。 new Project()只創建一個Project對象,因為您沒有定義默認構造函數,並且您沒有顯式調用任何其他方法,所以執行會立即退出。 進行以下更改

new Project().init();

您需要將Panel放在JFrame以使其可見。 init()方法中嘗試類似下面的內容

JFrame frame = new JFrame(); frame.add(pl); frame.pack(); frame.setVisible(true);

你的代碼運行正常。 我懂了:

在此輸入圖像描述

我的猜測是你試圖將它作為Java應用程序運行,而不是作為Java Applet運行。 你的類中有main()方法,這可能導致這種混亂。 main()可以刪除。 對於applet, init()是入口點,就像main()是作為應用程序運行的那樣。

右鍵單擊該類,然后選擇Run As> Java Applet。 例如:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM