Hallo,
Landei und ich haben begonnen ein zweifarbiges Layout für den JFilechooser zu entwerfen. Bewundern kann man das in meinem Tool von ShockCfg 3. Ich bin bei weitem kein Hacker, also schaffe ich das alleine nicht. Wenn man das Tool mit dem Argument xerxes startet erscheint erst ein Ok-Dialog und dann der JFilechooser. Dank Landei ist er fast komplett grün/schwarz. Da sind aber noch drei Bugs.
1tens die Farbe der Movebuttons im aufgepoppten Filchooser. Da sind die zwei Buttons, also die Dreiecke, noch nicht grün/schwarz?
2tens die Farben der Movebuttons im File-/Dirctoryview sind auch noch nicht grün/schwarz. Also die grünen Dreiecke fehlen?
3tens die Trennlinie | in grün, fehlt für die JComboboxes, zwischen Liste und Dreieck?
So, ihr müsst mein Tool herunterladen wenn ihr helfen wollt. Zur Veranschaulichung hier noch die Datei mit dem Filechooser:
Landei und ich haben begonnen ein zweifarbiges Layout für den JFilechooser zu entwerfen. Bewundern kann man das in meinem Tool von ShockCfg 3. Ich bin bei weitem kein Hacker, also schaffe ich das alleine nicht. Wenn man das Tool mit dem Argument xerxes startet erscheint erst ein Ok-Dialog und dann der JFilechooser. Dank Landei ist er fast komplett grün/schwarz. Da sind aber noch drei Bugs.
1tens die Farbe der Movebuttons im aufgepoppten Filchooser. Da sind die zwei Buttons, also die Dreiecke, noch nicht grün/schwarz?
2tens die Farben der Movebuttons im File-/Dirctoryview sind auch noch nicht grün/schwarz. Also die grünen Dreiecke fehlen?
3tens die Trennlinie | in grün, fehlt für die JComboboxes, zwischen Liste und Dreieck?
So, ihr müsst mein Tool herunterladen wenn ihr helfen wollt. Zur Veranschaulichung hier noch die Datei mit dem Filechooser:
Java:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.metal.MetalComboBoxButton;
import javax.swing.plaf.metal.MetalComboBoxIcon;
import java.util.ArrayList;
import java.util.Locale;
public class WriteCfg
{
private final JFileChooser dir;
private int returnval;
private File shock2exe;
private BufferedWriter bufferwrite;
private SetRes setres;
private ReadCfg readcfg;
public WriteCfg(SetRes setres, ReadCfg readcfg)
{
this.setSetres(setres);
this.setReadcfg(readcfg);
UIManager.put("OptionPane.questionDialog.border.background", new javax.swing.plaf.ColorUIResource(Color.GREEN));
UIManager.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.black));
UIManager.put("OptionPane.questionDialog.titlePane.background", new javax.swing.plaf.ColorUIResource(Color.BLACK));
UIManager.put("OptionPane.questionDialog.titlePane.foreground", new javax.swing.plaf.ColorUIResource(Color.GREEN));
UIManager.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.green));
UIManager.put("OptionPane.questionDialog.titlePane.shadow", new javax.swing.plaf.ColorUIResource(Color.GREEN));
javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme(new NoBumpsTheme());
JDialog.setDefaultLookAndFeelDecorated(true);
//Inverting Colors for pressed Buttons
try {
UIManager.setLookAndFeel( new MyLookAndFeel() );
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOptionPane optPane = new JOptionPane(setres.getTxt().getString("WriteCfgDia1"));
optPane.setOptionType(JOptionPane.DEFAULT_OPTION);
JDialog dia = optPane.createDialog(null, setres.getTxt().getString("WriteCfgDia1"));
dia.getRootPane().setBorder(BorderFactory.createLineBorder(Color.green, 3));
changeColor(dia.getComponents());
dia.setModal(true);
dia.setVisible(true);
//Inverting Colors
UIManager.put("Button.select", Color.green);
//Filechooser opening
dir = new JFileChooser()
{
/**
*
*/
private static final long serialVersionUID = 1L;
public JDialog createDialog(Component parent)
{
JDialog d = super.createDialog(parent);
d.getContentPane().setBackground(Color.black);
return d;
}
};
changeColor(new Component[]{dir});
colorChooser(dir);
dir.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
returnval = dir.showDialog(null, setres.getTxt().getString("WriteCfgDia2"));
if (returnval == JFileChooser.APPROVE_OPTION)
{
shock2exe = dir.getSelectedFile();
try
{
//make shockcfg.cfg
bufferwrite = new BufferedWriter( new FileWriter("ShockCfg.ini"));
readcfg.setreadpath(shock2exe.getPath());
bufferwrite.write(readcfg.getreadpath());
//thx to Al_B
bufferwrite.write("\r\n");
Locale w = Locale.getDefault();
if(w.getLanguage().equalsIgnoreCase("de_DE"))
{
bufferwrite.write("de_DE");
}
else
{
bufferwrite.write("en_EN");
}
bufferwrite.write("\r\n");
bufferwrite.close();
}
catch (IOException ex)
{
System.out.println(setres.getTxt().getString("WriteCfgErr"));
System.out.println(ex);
System.exit(0);
}
}
else
{
System.exit(0);
}
}
public void colorChooser(JFileChooser chooser){
@SuppressWarnings("rawtypes")
java.util.List<JComboBox> boxes = getComponents(chooser, JComboBox.class);
for(@SuppressWarnings("rawtypes")
JComboBox box : boxes)
{
java.util.List<JButton> buttons = getComponents(box, JButton.class);
for(JButton button : buttons)
{
MetalComboBoxButton b = (MetalComboBoxButton)button;
b.setComboIcon(new MyIcon());
}
box.setForeground(Color.GREEN);
box.setBackground(Color.BLACK);
box.setBorder(BorderFactory.createLineBorder(Color.green));
}
}
public void changeColor(Component[] comp)
{
for(int x=0; x<comp.length; x++)
{
try
{
comp[x].setBackground(Color.black);
comp[x].setForeground(Color.green);
}
catch(Exception e) {}
if(comp[x] instanceof Container)
changeColor(((Container)comp[x]).getComponents());
}
}
public class MyIcon extends MetalComboBoxIcon
{
private static final long serialVersionUID = -6616394682227867147L;
public void paintIcon(Component c, Graphics g, int x, int y)
{
int iconWidth = getIconWidth();
g.translate( x, y );
g.setColor(Color.GREEN);
g.drawLine( 0, 0, iconWidth - 1, 0 );
g.drawLine( 1, 1, 1 + (iconWidth - 3), 1 );
g.drawLine( 2, 2, 2 + (iconWidth - 5), 2 );
g.drawLine( 3, 3, 3 + (iconWidth - 7), 3 );
g.drawLine( 4, 4, 4 + (iconWidth - 9), 4 );
g.translate( -x, -y );
}
}
public static <T> java.util.List<T> getComponents(Component component, Class<T> clazz)
{
java.util.List<T> comps = new ArrayList<T>();
if(clazz.isInstance(component))
{
comps.add(clazz.cast(component));
}
else if(component instanceof Container)
{
for(Component c : ((Container)component).getComponents())
{
comps.addAll(getComponents(c, clazz));
}
}
return comps;
}
public SetRes getSetres() {
return setres;
}
public void setSetres(SetRes setres) {
this.setres = setres;
}
public ReadCfg getReadcfg() {
return readcfg;
}
public void setReadcfg(ReadCfg readcfg) {
this.readcfg = readcfg;
}
}