1

プログラムの実行中にクラスの 2 つのメソッドのいずれかを使用して更新する必要があるタブが 1 つあります。そのため、メソッド内にコンポーネントを追加していますが、それらのいずれも表示できません。私が知る限り、それらはコンストラクターの外側にあるため、メソッド内ですべて宣言していましたが、問題を解決するために移動しました。どんな助けでも大歓迎です。

少し厄介で申し訳ありません。私は問題を修正しようとしてきましたが、少し盲目的です。

また、コードは正常にコンパイルされ、println はコード表示で期待どおりに出力されます。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package assgui;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.io.*;
/**
 *
 * @author Hugh
 */
public class ResultPanel extends JPanel {

    static String[][] activityString = new String[31][2];
    static String[][] foodString = new String[36][2];

        String weighstr, foodstr, servstr, kjstr, actstr, hourstr, minstr, metstr;

        JLabel uw = new JLabel ("User Weight:  ");
        JLabel weigh = new JLabel (weighstr);
        JLabel kg = new JLabel("  kg");
        JLabel sel1 = new JLabel("Food:  ");
        JLabel sel2 = new JLabel(foodstr);
        JLabel sel3 = new JLabel("  -  kj  ");
        JLabel sel4 = new JLabel(kjstr);
        JLabel sel5 = new JLabel("  ,  Servings:  ");
        JLabel sel6 = new JLabel(servstr);
        JLabel sel7 = new JLabel("Activity for comparison:  ");
        JLabel sel8 = new JLabel(actstr);
        JLabel sel9 = new JLabel("  Time required to balance:  ");
        JLabel sel10 = new JLabel(hourstr);
        JLabel sel11 = new JLabel("  hours");
        JLabel sel12 = new JLabel(minstr);
        JLabel sel13 = new JLabel("  minutes");
        JLabel smlspace = new JLabel("          ");
        JLabel medspace = new JLabel("               ");
        JLabel lrgspace = new JLabel("                         ");

        JLabel auw = new JLabel("User Weight:  ");
        JLabel aweigh = new JLabel(weighstr);
        JLabel akg = new JLabel("  kg");
        JLabel asel1 = new JLabel("Activity:  ");
        JLabel asel2 = new JLabel(actstr);
        JLabel asel3 = new JLabel("  -  MET  ");
        JLabel asel4 = new JLabel(metstr);
        JLabel asel5 = new JLabel("  ,  Duration:  ");
        JLabel asel6 = new JLabel(hourstr);
        JLabel asel7 = new JLabel("  hour  ");
        JLabel asel8 = new JLabel(minstr);
        JLabel asel9 = new JLabel("  minutes  ");
        JLabel asel10 = new JLabel("Food for comparison:  ");
        JLabel asel11 = new JLabel(foodstr);
        JLabel asel12 = new JLabel("  Servings to balance:  ");
        JLabel asel13 = new JLabel(servstr);
        JLabel asmlspace = new JLabel("          ");
        JLabel amedspace = new JLabel("               ");
        JLabel alrgspace = new JLabel("                         ");

        Public ResultPanel() {
        setBackground(Color.GREEN);
        setPreferredSize(new Dimension(650, 600));
        {

    public void activityPaint (String[][] actstring, String[][] foodstring, double        weight, int activity, int hour, int min, int food, double servings) {

        System.out.println("act1");
        weighstr = Double.toString(weight);
        actstr = activityString[activity][0];
        hourstr = Integer.toString(hour);
        minstr = Integer.toString(min);
        metstr = activityString[activity][1];
        foodstr = foodString[food][0];
        servstr = Double.toString(servings);

        add(lrgspace);
        add(uw);
        add(weigh);
        add(kg);
        add(medspace);
        add(sel1);
        add(sel2);
        add(sel3);
        add(sel4);
        add(sel5);
        add(sel6);
        add(sel7);
        add(sel8);
        add(sel9);
        add(sel10);
        add(sel11);
        add(sel12);
        add(sel13);

    }

    public void foodPaint(String[][] foodstring, String[][] actstring, double weight, int food, int servings, int activity, int hour, int min) {

        System.out.println("food1");
        weighstr = Double.toString(weight);
        foodstr = foodString[food][0];
        servstr = Integer.toString(servings);
        kjstr = foodString[food][1];
        actstr = activityString[activity][0];
        hourstr = Integer.toString(hour);
        minstr = Integer.toString(min);


        add(lrgspace);
        add(uw);
        add(weigh);
        add(kg);
        add(medspace);
        add(sel1);
        add(sel2);
        add(sel3);
        add(sel4);
        add(sel5);
        add(sel6);
        add(sel7);
        add(sel8);
        add(sel9);
        add(sel10);
        add(sel11);
        add(sel12);
        add(sel13);

    }

}
4

1 に答える 1

1

この JPanel を作成するメイン メソッド (または任意のメソッド) は、 activityPaint(...) および foodPaint(...) メソッドも呼び出しますか? これらのメソッドが呼び出されない場合、パネルに追加されることはないようです。JPanel を作成するときにすべてを追加する場合は、コンストラクターで activityPaint() と foodPaint() を呼び出す必要があります。

JLables の値を別の何か (ユーザー入力など) が発生するまで設定できない場合は、JPanel の作成時にコンポーネントを追加し、後で setText(...) メソッドを呼び出すことができます。テキストを変更するとサイズに影響するため、サイズも設定する場合は必ず確認してください。nameofjpanel .setSize( nameofjpanel .getPreferredSize())を使用することを好みます。

これがあなたのお役に立てば幸いです。私はあなたがここで何をしようとしているのかを完全に見逃していません.

于 2012-06-01T14:47:57.910 に答える