Swing UIManager.getColor () ключи

Вот более простая реализация того, чего вы пытаетесь достичь. Вы можете прочитать файл в список Python и ссылаться на каждую строку по индексу списка Python

with open('text_file.txt','r') as f: # automatically closes the file
    input_file = f.readlines() # Read all lines into a Python list

for line_num in range(len(input_file)):
    if "INBOIS BERCUKAI" in input_file[line_num]:
        print(input_file[line_num + 2]) # offset by any number you want
    # same for other if statements
21
задан Jason S 4 July 2017 в 02:56
поделиться

3 ответа

Я не думаю, что существует определенный стандартный набор ключей. Но вы можете попробовать этот фрагмент кода, чтобы перечислить те, которые в настоящее время доступны в алфавитном порядке:

List<String> colors = new ArrayList<String>();
for (Map.Entry<Object, Object> entry : UIManager.getDefaults().entrySet()) {
    if (entry.getValue() instanceof Color) {
        colors.add((String) entry.getKey()); // all the keys are strings
    }
}
Collections.sort(colors);
for (String name : colors)
    System.out.println(name);

Это приводит к тому, что список слишком длинный, чтобы воспроизвести его здесь.

6
ответ дан 29 November 2019 в 20:55
поделиться

@mmyers вдохновили меня. Вот короткая программа для вывода значений по умолчанию UIManager в сортируемую таблицу.

package com.example.test.gui;

import java.awt.Color;
import java.awt.Component;
import java.util.Map;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;

import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.SortedList;
import ca.odell.glazedlists.gui.AbstractTableComparatorChooser;
import ca.odell.glazedlists.gui.TableFormat;
import ca.odell.glazedlists.swing.EventTableModel;
import ca.odell.glazedlists.swing.TableComparatorChooser;

public class UIManagerDefaultsViewer {

    public static class UIEntry
    {
        final private String key;
        final private Object value;

        UIEntry(Map.Entry<Object,Object> e)
        {
            this.key = e.getKey().toString();
            this.value = e.getValue(); 
        }

        public String getKey() {
            return key;
        }
        public Object getValue() {
            return value;
        }
        public Class getValueClass() {
            if (value == null)
                return null; // ?!?!?!
            return value.getClass();
        }
        public String getClassName() {
            // doesn't handle arrays properly
            if (value == null)
                return "";

            return value.getClass().getName();
        }
    }   

    public static class UIEntryRenderer extends DefaultTableCellRenderer
    {
        Color[] defaults = new Color[4];
        public UIEntryRenderer()
        {
            super();
            defaults[0] = UIManager.getColor("Table.background");
            defaults[1] = UIManager.getColor("Table.selectionBackground");
            defaults[2] = UIManager.getColor("Table.foreground");
            defaults[3] = UIManager.getColor("Table.selectionForeground");
        }

        public void setDefaultColors(Component cell, boolean isSelected)
        {
            cell.setBackground(defaults[isSelected ? 1 : 0]);
            cell.setForeground(defaults[isSelected ? 3 : 2]);
        }

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column)
        {
            Component cell = super.getTableCellRendererComponent(table, value,
                    isSelected, hasFocus, row, column);
            if (table.convertColumnIndexToModel(column) == 1) // the value column
            {
                final EventTableModel<UIEntry> tableModel = 
                    (EventTableModel<UIEntry>) table.getModel();
                UIEntry e = tableModel.getElementAt(row);
                JLabel l = (JLabel)cell;


                if (value instanceof Color)
                {
                    Color c = (Color)value;
                    cell.setBackground(c);
                    cell.setForeground(
                            c.getRed()+c.getGreen()+c.getBlue() >= 128*3
                            ? Color.black : Color.white);
                    // choose either black or white depending on brightness

                    l.setText(String.format("Color 0x%08x (%d,%d,%d alpha=%d)",
                        c.getRGB(), c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()));
                    return cell;
                }
                else if (e.getKey().endsWith("ont"))
                    // possible font, not always ".font"
                {
                    // fonts are weird, for some reason the value returned
                    // in the entry set of UIManager.getDefaults()
                    // is not the same type as the value "v" below                  
                    Object v = UIManager.get(e.getKey());
                    if (v instanceof javax.swing.plaf.FontUIResource)
                    {
                        javax.swing.plaf.FontUIResource font = 
                            (javax.swing.plaf.FontUIResource)v;
                        l.setText("Font "+font.getFontName()+" "+font.getSize());
                    }
                }
            }

            setDefaultColors(cell, isSelected);

            return cell;
        }
    }   

    public static void main(String[] args) {
        final EventList<UIEntry> uiEntryList = 
            GlazedLists.threadSafeList(new BasicEventList<UIEntry>());

        for (Map.Entry<Object,Object> key : UIManager.getDefaults().entrySet())
        {
            uiEntryList.add(new UIEntry(key));
        }

        final SortedList<UIEntry> sortedUIEntryList = new SortedList<UIEntry>(uiEntryList, null);

        // build a JTable
        String[] propertyNames = new String[] {"key","value","className"};
        String[] columnLabels = new String[] {"Key", "Value", "Class"};
        TableFormat<UIEntry> tf = GlazedLists.tableFormat(UIEntry.class, propertyNames, columnLabels);
        EventTableModel<UIEntry> etm = new EventTableModel<UIEntry>(sortedUIEntryList, tf);

        JTable t = new JTable(etm);
        TableComparatorChooser<UIEntry> tcc = TableComparatorChooser.install(t, 
                sortedUIEntryList, AbstractTableComparatorChooser.SINGLE_COLUMN,
                tf);
        sortedUIEntryList.setComparator(tcc.getComparatorsForColumn(0).get(0));
        // default to sort by the key

        t.setDefaultRenderer(Object.class, new UIEntryRenderer());        

        JFrame f = new JFrame("UI Manager Defaults Viewer");
        // show the frame
        f.add(new JScrollPane(t));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);     
    }

}
4
ответ дан 29 November 2019 в 20:55
поделиться

Они зависят от реализации Look и Feel. Посмотрите в BasicLookAndFeel.java основные ключи. Не ожидайте, что все PL & F будут вести себя одинаково или даже оставаться одинаковыми между версиями.

0
ответ дан 29 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: