Я хочу создать свои собственные пользовательские кнопки (или у них есть шаблон для создания собственных пользовательских кнопок). Какие методы мне нужно переопределить, чтобы сделать ту же кнопку размера, что и JButton, если я хочу, чтобы она выглядела так же. Потому что я думал, что если вы добавите 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);
}
}
Screen Shot:
Моя пользовательская кнопка - это размер пикселя? Что, вероятно, вызывает это?
Что делать, если я хочу @Override метод в новом классе. Должен ли я называть его в конструкторе, или он будет по умолчанию для размера JButton и чувствовать? Может ли кто-нибудь привести пример. –
Какой метод? Это зависит от того, чего вы на самом деле пытаетесь достичь? – MadProgrammer
Это то, что я хотел бы сделать для первой попытки при создании кнопки. Я хочу, по крайней мере, сделать его похожим на кнопку по умолчанию на Java? Во-вторых, я хотел бы иметь возможность изменить размер на нем и что я не уверен, должен ли я переопределить метод setPreferredSize (...) в новом классе, в данном случае DougCustomButton(). В-третьих, я хотел бы иметь список методов, которые должны или могут быть переопределены для создания дочернего класса JButton? Я знаю, что paintComponent() можно переопределить и setPreferredSize, но я бы предположил, что есть методы, которые следует переопределить. –