gpt4 book ai didi

java - 在构造函数之外添加的组件不会出现

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:22 25 4
gpt4 key购买 nike

我有一个选项卡需要在程序运行时使用其类中的两种方法之一进行更新,因此我在方法中添加组件,但无法显示其中任何一个。据我所知,这是因为它们位于构造函数之外,我过去常常在方法内部声明它们,但将其移动以尝试解决问题。任何帮助将不胜感激。

抱歉,这有点困惑,我一直在尝试解决这个问题,有点盲目。

代码编译良好,并且 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);

}

}

最佳答案

创建此 JPanel 的主方法(或任何方法)是否也调用 ActivityPaint(...) 和 foodPaint(...) 方法?如果这些方法没有被调用,那么它们似乎永远不会被添加到面板中。如果您希望在创建 JPanel 时添加所有内容,那么您必须让构造函数调用 ActivityPaint() 和 foodPaint()。

如果在发生其他情况(例如用户输入)之前无法设置 JLable 的值,那么您可以在创建 JPanel 时添加组件,然后调用 setText(...) 方法。请确保您这样做是否也设置了大小,因为更改文本会影响它。我更喜欢使用nameofjpanel.setSize(nameofjpanel.getPreferredSize())。

希望这对您有所帮助,而且我并没有完全错过您在这里的目的。

关于java - 在构造函数之外添加的组件不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com