2016-01-05 1 views
0

Я хочу отображать только панели «Swartches» и «RGB».показать только 2 панели в JColorChooser

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JColorChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.colorchooser.AbstractColorChooserPanel; 

public class ColorPickerSample { 

    private static final long serialVersionUID = 1L; 
    private static String hex = "#ff0033"; 

    private static void createAndShowGUI() { 

     // Create and set up the window. 
     final JFrame frame = new JFrame("Centered"); 

     // Display the window. 
     frame.setSize(50, 100); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     // set flow layout for the frame 
     frame.getContentPane().setLayout(new FlowLayout()); 

     JButton button = new JButton(""); 
     System.out.println(Color.decode(hex)); 
     button.setBackground(Color.decode(hex)); 
     button.setPreferredSize(new Dimension(20, 20)); 

     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       JColorChooser cc = new JColorChooser(); 
       AbstractColorChooserPanel defaultPanels[] = cc.getChooserPanels(); 
       cc.removeChooserPanel(defaultPanels[1]); 
       cc.removeChooserPanel(defaultPanels[2]); 
       cc.removeChooserPanel(defaultPanels[4]); 
      // frame.getContentPane().add(cc); 
       //Color color = cc.showDialog(frame, "Choose a color", Color.blue); 
       } 
     }); 

     frame.getContentPane().add(button); 

    } 

    public static void main(String[] args) { 

     //Schedule a job for the event-dispatching thread: 

     //creating and showing this application's GUI. 

     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 

       createAndShowGUI(); 

      } 

     }); 
    } 

} 

Как я могу показать 2 панели только

ответ

3

В API также есть метод removeChooserPanel(...).

Так что я думаю, вы могли бы сделать что-то вроде:

AbstractColorChooserPanel defaultPanels[] = cc.getChooserPanels(); 
cc.removeChooserPanel(defaultPanels[4]); // CMYK 
cc.removeChooserPanel(defaultPanels[2]); // HSL 
... 

Edit:

Я не знаю, как бы я показываю этот модифицированный Chooser в панели

Вам нужно будет для использования метода createDialog(...) JColorChooser:

JDialog dialog = JColorChooser.createDialog(
    frame.getContentPane(), 
    "Choose a Color", 
    true, 
    cc, 
    null, 
    null); 
dialog.setVisible(true); 
System.out.println(cc.getColor()); 
+0

Я устал от этого, но я не мог заставить его работать. Я отредактировал код в главном вопросе – user1631306

+1

@ user1631306, ваш опубликованный код отлично подходит для меня (в будущем отправьте код с вопросом, чтобы мы не догадались, что вы, возможно, попробовали). Конечно, вам действительно нужно отобразить выбор в кадре, но как только я это сделал, я вижу только «Образцы» и «RGB». Я использую JDK 8 в Windows 7. – camickr

+0

Конечно, я буду помнить об этом. Я не уверен, как мне отобразить этот измененный выбор в панели. Могу ли я сделать это как «Цветной цвет = cc.showDialog (рамка,« Выберите цвет », Color.blue); – user1631306

Смежные вопросы