Чтобы сэкономить некоторое время при настройке размера компонентов Swing (JPanel, JLabel и т. Д.), Я пытаюсь написать метод, который при вызове будет устанавливать этот компонент с использованием 3 стандартных функций определения размера.Создание метода обработки всех типов компонентов Swing
Я хотел бы быть в состоянии сделать это:
import CustomComponents;
...
JPanel xPanel = new JPanel();
CSize.setDefiniteSize(xPanel, 400, 300);
...
и (или предпочтительно)
...
JPanel xPanel = new JPanel();
xPanel.CSize.setDefiniteSize(400, 300);
...
Вот код, у меня до сих пор. Проблема в том, что я хочу, чтобы этот метод был функциональным для всех типов компонентов Swing, и, похоже, он работает только для тех, которые я указываю в заголовке.
package CustomComponents;
import javax.swing.JComponent;
import java.awt.Dimension;
public class CSize
{
public static void setDefiniteSize(JComponent c, int h, int w)
{
Dimension k = new Dimension (h, w);
c.setMaximumSize(k);
c.setMinimumSize(k);
c.setPreferredSize(k);
}
}
Как вы можете видеть, здесь я попытался с помощью JComponent, но это не будет работать, так как все, что я использую его - сказать JPanel - это JPanel, а не JComponent (хотя это подкласс? Я все еще не понимаю, как это работает)
Можете ли вы разместить точную ошибку/исключение? – sanbhat
метод setDefiniteSize в классе CustomComponents.CSize не может применяться к заданным типам; требуется: javax.swing.JComponent, init, init; найдено: javax.swing.JFrame.int, int; Причина: фактический аргумент javax.swing.JFrame не может быть преобразован в javax.swing.JComponent путем преобразования вызова метода –
'JFrame' _is not_ a' JComponent'. –