java关于swing组件的问题
class OvalButton extends JButton {
public OvalButton() {
}
public OvalButton(String text) {
super(text);
}
protected void paintComponent(Graphics g) {
// Draw an oval
super.paintComponent(g);
g.drawOval(5, 5, getWidth() - 10, getHeight() - 10);
}
/** Override get method for preferredSize */
public Dimension getPreferredSize() {
return new Dimension(100, 50);
}
/** Override get method for minimumSize */
public Dimension getMinimumSize() {
return new Dimension(100, 50);
}
}
最后两个方法有什么意义?用来干嘛的?可以不要嘛?在这里这样设置的目的是什么? 展开
2014-03-01
import java.awt.*;//
import java.awt.event.*;
import javax.swing.*;
class OvalButton extends JButton {
public OvalButton() {
}
public OvalButton(String text) {
super(text);
}
protected void paintComponent(Graphics g) {
// Draw an oval
super.paintComponent(g);
// System.out.println("OvalButton.getWidth()=" + getWidth());//
// System.out.println("OvalButton.getHeight()=" + getHeight());//
g.drawOval(5, 5, getWidth() - 10, getHeight() - 10);
}
/** Override get method for preferredSize */
/* public Dimension getPreferredSize() {
return new Dimension(100, 50);
}
/** Override get method for minimumSize */
/* public Dimension getMinimumSize() {
return new Dimension(100, 50);
}
*/
public static void main(String[] args) {
JFrame jfrm = new JFrame("OvalButton Test");
OvalButton obtn = new OvalButton("Test");
jfrm.add(obtn);
System.out.println("obtn.getPreferredSize()="+
obtn.getPreferredSize());
System.out.println("obtn.getMinimumSize()="+
obtn.getMinimumSize());
jfrm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
jfrm.setVisible(true);
jfrm.setBounds(0, 0, 200, 200);
}
}
/*
* public Dimension getPreferredSize();函数用来得到组件OvalButton的首选大小即该组件的尺寸,
* 用户通过重载该方法可以很方便的设置自己认为合适的首选大小。
* public Dimension getMinimumSize(),将此组件的最小大小设置为一个常量值。
* Dimension是尺寸(尺寸包括长和宽)的意思,Java中将其封装成一个含有组件长和宽信息的类,
* 这样做便于这两个函数返回2个信息。若不封装若要返回height和weight有点困难!?
* 如果你的代码的其他部分要调用这两个方法,那这两个方法就有必要重载,具体详见JAVA_API
* 对你给出的代码,本人写了main方法,你可以测试比较重载与不重载这两个方法的区别。
*/
源文件已上传,下载即可如下运行:
注释掉这两个重载方法后的运行结果:
进行这两个重载方法后的运行结果:
2014-03-01