【发布时间】:2014-02-19 10:17:46
【问题描述】:
为了在设置 Swing 组件(JPanel、JLabel 等)的大小时节省一些时间,我正在尝试编写一个方法,该方法在调用时将使用 3 个标准大小定义函数来设置该组件的大小.
我希望能够做到这一点:
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(即使它是一个子类?我仍然没有'不知道它是如何工作的)
【问题讨论】:
-
你能发布一个确切的错误/异常吗?
-
CustomComponents.CSize 类中的方法 setDefiniteSize 不能应用于给定类型;必需:javax.swing.JComponent,init,init;找到:javax.swing.JFrame.int,int;原因:实参javax.swing.JFrame无法通过方法调用转换为javax.swing.JComponent
-
JFrame不是JComponent。
标签: java swing jcomponent