为什么我的JPanel占据了屏幕的一半,我该如何解决呢?

时间:2018-11-03 06:05:06

标签: java swing acm-java-libraries

我遇到一个问题,即使我不需要,JPanel占用了我一半的屏幕。

我正在使用acm软件包进行图形化仿真,并使用滑块来调整仿真参数

import acm.program.*;
import acm.graphics.*;
import acm.util.*;
import acm.gui.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class Test extends GraphicsProgram{

sliderBox X_MIN = new sliderBox("X MIN", 10, 300, 50);

public void init() {

    JPanel myPanel = new JPanel();
    JLabel myLabel = new JLabel("Test");
    TableLayout myLayout = new TableLayout(5, 1);
    myPanel.setVisible(true);
    myPanel.setLayout(myLayout);
    myPanel.add(myLabel);
    myPanel.add(X_MIN.myPanel);
    add(myPanel);
    println(myPanel.getPreferredSize());

}


public void run() {

    resize(1500, 900);
    add(new GRect(10, 10, 60, 50));

}
}

尽管由于我是新手而无法在自己的帖子上上传图片,但结果输出是一个窗口,其中屏幕的一半是acm.graphics中的白色画布,而屏幕的后半部分则不必要地大灰色面板无法优化面板中实际包含的少数组件的容纳量

预先感谢

**编辑 这是我的sliderBox类

import java.awt.*;
import javax.swing.*;
import acm.gui.*;

public class sliderBox {

JPanel myPanel;
JLabel nameLabel;
JLabel minLabel;
JSlider mySlider;
JLabel maxLabel;
JLabel sReadout;
int imin;
int imax;
double dmin;
double dmax;

public sliderBox (String name, Integer min, Integer max, Integer iniValue) {

    myPanel = new JPanel();
    nameLabel = new JLabel(name);
    minLabel = new JLabel(min.toString());
    mySlider = new JSlider(min, max, iniValue);
    maxLabel = new JLabel(max.toString());
    sReadout = new JLabel(iniValue.toString());
    sReadout.setForeground(Color.BLUE);
    myPanel.setLayout(new TableLayout(1, 5));
    myPanel.add(nameLabel, "width = 80");
    myPanel.add(minLabel, "width = 20");
    myPanel.add(mySlider, "width = 120");
    myPanel.add(maxLabel, "width = 60" );
    myPanel.add(sReadout, "width = 80");
    imin = min;
    imax = max;

}


}

0 个答案:

没有答案