У меня проблема с тем, что мне кажется, что мой 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;
}
}