Hallo,
ich habe es schon in anderen Threads und auf Oracle gefragt, aber habe noch keine Antwort erhalten. Es geht um einen GUI-Hack. Ich kann so etwas leider nicht selber schreiben, weil ich nicht weis wie ich den Namen der Elemente die ich einfärben möchte herausfinde. Der Hack wurde schon angefangen, aber er enthält noch drei Elemente, die noch nicht eingefärbt sind. Der Filechooser enthält eine JCombobox und in ihr ist ein grünes Dreieck und davor der Text. Dazwischen sollte eine grüne Trennlinie sein - ist sie aber nicht. Zweitens sollte in der aufklappbaren Liste der JCombobox auf der rechten Seite eine Schiebeleiste sein, die wird aber noch Schwarz dargestellt. Genauer sollten da zwei grüne Dreiecke und ein Schieber sein. Drittens sollte in dem Datei-/Verzeichnisfeld vier kleine Buttons mit grünem Dreieck sein, und auch ein relativ grüner Schieber.
Wer hat Ahnung von sollchen Hacks? Kann jemand den Hack vervollständigen? Danke im Voraus!
Hier die Klasse mit dem Hack, wie er bis jetzt ist:
ich habe es schon in anderen Threads und auf Oracle gefragt, aber habe noch keine Antwort erhalten. Es geht um einen GUI-Hack. Ich kann so etwas leider nicht selber schreiben, weil ich nicht weis wie ich den Namen der Elemente die ich einfärben möchte herausfinde. Der Hack wurde schon angefangen, aber er enthält noch drei Elemente, die noch nicht eingefärbt sind. Der Filechooser enthält eine JCombobox und in ihr ist ein grünes Dreieck und davor der Text. Dazwischen sollte eine grüne Trennlinie sein - ist sie aber nicht. Zweitens sollte in der aufklappbaren Liste der JCombobox auf der rechten Seite eine Schiebeleiste sein, die wird aber noch Schwarz dargestellt. Genauer sollten da zwei grüne Dreiecke und ein Schieber sein. Drittens sollte in dem Datei-/Verzeichnisfeld vier kleine Buttons mit grünem Dreieck sein, und auch ein relativ grüner Schieber.
Wer hat Ahnung von sollchen Hacks? Kann jemand den Hack vervollständigen? Danke im Voraus!
Hier die Klasse mit dem Hack, wie er bis jetzt ist:
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;
}
}