Java Custom ColorChooserPanel
Я хочу создать кастом ColorChooserPanel
за JcolorChooser
в качелях Java.
public class ColorPanel extends AbstractColorChooserPanel {
public void buildChooser() {
setLayout(new GridLayout(1, 3));
makeAddButton("Red", Color.red);
makeAddButton("Green", Color.green);
makeAddButton("Blue", Color.blue); }
public void updateChooser() {
}
public String getDisplayName() {
return "MyChooserPanel"; }
public Icon getSmallDisplayIcon() {
return null; }
public Icon getLargeDisplayIcon() {
return null; }
private void makeAddButton(String name, Color color) {
JButton button = new JButton(name);
button.setBackground(color);
button.setAction(new AbstractAction() {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
JButton button = (JButton) arg0.getSource();
getColorSelectionModel().setSelectedColor(button.getBackground());
}});
add(button); }
}
Он должен показывать кнопку 3 цвета, но вместо этого он показывает кнопку 6. Кто-нибудь может показать мне, где я что-то не так понял? И как я могу удалить панель ниже.
ColorPanel colorPanel = new ColorPanel();
colorPanel.buildChooser();
colorChooser = new JColorChooser();
colorChooser.addChooserPanel(colorPanel);
Другой вопрос: могу ли я удалить недавнюю панель с помощью цветной панели образцов. Я просто хочу показать только цветную палитру. Я имею в виду "недавнюю" часть на картинке ниже.
1 ответ
ColorPanel colorPanel = new ColorPanel();
// colorPanel.buildChooser(); <-- remove this line
Когда вы добавляете colorPanel
к JChooserPanel
этот метод вызывается:
public void installChooserPanel(JColorChooser enclosingChooser) {
if (chooser != null) {
throw new RuntimeException ("This chooser panel is already installed");
}
chooser = enclosingChooser;
chooser.addPropertyChangeListener("enabled", enabledListener);
setEnabled(chooser.isEnabled());
buildChooser();
updateChooser();
}
Таким образом, вам не нужно снова "строить" панель, так как она уже создана, когда вы добавили ее в colorChooser
,