Почему мой JPanel занимает половину экрана и как я могу это исправить? - PullRequest
0 голосов
/ 03 ноября 2018

У меня проблема с тем, что мне кажется, что мой 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, а вторая половина экрана - излишне большая серая панель, которая не оптимизирует сдерживание нескольких компонентов, которые на самом деле находятся на панели

Заранее спасибо

** Редактировать вот мой слайдерБокс класс

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;

}


}
...