我想创建自己的自定义按钮(或者有一个模板来创建我自己的自定义按钮)。如果我希望它看起来相同,我需要覆盖哪些方法来制作与JButton相同大小的按钮。因为我认为如果你将JButton扩展到另一个按钮类,一个自定义按钮,它具有与JButton相同的大小和外观。但是当我把按钮放在表格上时,它会变得很小,看起来不像普通的按钮。
我想要的是至少拥有与JButton相同的按钮。但是我也希望在前景和背景中添加边框,文字和颜色?我需要覆盖的所有方法是什么,有没有人有一个简单的例子?
班级:(JButton) - 我的按钮
import javax.swing.JButton;
public class DougCustomButton extends JButton {
DougCustomButton() {
super();
setBorder(BorderFactory.createLineBorder(Color.BLUE));
}
@Override
public void setPreferredSize(int a, int b) {
//What would I put in here, do I need super()
}
}
班级:(JPanel)
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class genericPanel2 extends JPanel {
private static final long serialVersionUID = 1L;
DougCustomButton b2 = new DougCustomButton();
public genericPanel2() {
add(b2);
setPreferredSize(new Dimension(50, 30));
}
}
类:(JFrame)
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class genericFrame2 {
Dimension dimension = new Dimension(450,450);
JFrame f = new JFrame("Not resizable");
genericPanel2 genericPanel = new genericPanel2();
public static boolean RIGHT_TO_LEFT = false;
public genericFrame2() {
initUI();
}
public static void addComponentsToPane(Container pane) {
}
public final void initUI() {
f.add(genericPanel);
f.setSize(dimension);
f.setResizable(true);
f.setLocationRelativeTo(null);
f.setTitle("Draw Line Test");
//addComponentsToPane(f.getContentPane());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
genericFrame2 ex = new genericFrame2();
ex.f.setVisible(true);
}
}
屏幕截图:
我的自定义按钮是像素的大小?可能导致什么原因?
答案 0 :(得分:1)
您可以在常规Border
上设置JButton
,就像其他JComponent一样 - 或许添加像
public DougCustomButton() {
super();
setBorder(BorderFactory.createLineBorder(Color.BLUE));
// and a font
Font aFont = new Font("Serif", Font.ITALIC | Font.BOLD);
setFont(aFont.deriveFont(18.0f));
}
答案 1 :(得分:1)
通过getPreferred/Minimum/MaximumSize
方法向布局管理器提供调整大小信息。这些通常委托给已安装的UI委托,它使用诸如文本,图标和边距属性之类的东西来确定按钮的大小。
一般来说,如果要“自定义”按钮,可以使用Action
API,它提供了一种提供自包含实体的方法,可以轻松应用于不同的组件,例如菜单,按钮,甚至由键绑定API
请查看How to use Actions了解详情