Swing Zweifarbiges Layout für den Filechooser

Status
Nicht offen für weitere Antworten.

NiXPhoE

Gesperrter Benutzer
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:

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;
	}
	
}
 
M

Mc Noise

Gast
Warum nicht pink/gelb? Find ich persönlich viel geiler.

Und sorry, wenn du kein Hacker bist, dann helfen wir dir hier auch nicht.
 

NiXPhoE

Gesperrter Benutzer
Weil das Tool für das Spiel System Shock 2 ist und der erste Teil hatte auch die zwei Mainfarben grün/schwarz.
Als Hacker hat man normalerweise viel Ahnung und fragt nicht um Hilfe!! :lol: Mein Tool ist aber eine Arche für GUIhacks und meine Fragen beziehen sich auf den einzigen hack der noch nicht perfekt ist! ;):D
 

NiXPhoE

Gesperrter Benutzer
Wer kann mir wenigstens eine der drei Fragen schon mal beantworten? Ich habe im Forum von Oracle einen Hinweis zum Javatutorial bekommen, weis aber nicht was ich damit anfangen kann!? Wer kann helfen bitte?

Danke!
 

Sehales

Bekanntes Mitglied
Vielleicht solltest du endlich ein eigenes LAF schreiben und nicht versuchen mit GUIHacks deinen Filechooser Schwarz Grün zu färben.
Es gab ja schon genug Themen zu deinem Problem und im letzten Thema wurde dir sogar die Lösung erklärt, du hättest es nur umsetzen brauchen....

Oracle meint höchstwahrscheinlich das Tutorial für LAF's, welches ich dir auch nur ans Herz legen kann: Lesson: Modifying the Look and Feel (The Java™ Tutorials > Creating a GUI With JFC/Swing)

Eine andere Idee wäre, dass du dein Programm von der GUI her neu machst (ist kein Hexenwerk und wenn es genügend abstrakt geschrieben ist, sollte das recht gut funktionieren) und nutzt JavaFX.
Dabei kannst du einfach per CSS deinen FileChooser färben wie du lustig bist.
 
Zuletzt bearbeitet:

NiXPhoE

Gesperrter Benutzer
Für dich war das Danke bestimmt nicht!!! Ich gebe nicht so kurz vor dem ziel auf wenn nur noch drei Bugs zu beseitigen sind!!! Ich habe ja die Lösung angenommen und sie hat drei Bugs, die ich in diesem Thread zu beseitigen suche! :)
 

Sehales

Bekanntes Mitglied
Exakt die Probleme, die du jetzt hast, wurden bereits gelöst. Es wurden dir teilweise komplette Quellcodeausschnitte fertig zur Verfügung gestellt. Du hättest es nur anwenden müssen, was du bekommen hast.
Ob ich ein Danke bekoomme oder eben nicht, ist mir eigentlich relativ egal. Ich habe dir lediglich eine Möglichkeit genannt und ich habe dir gesagt, dass es die Lösung bereits gab, bzw diese bereits genannt wurde. Falls du dich erinnern kannst, es wurden sogar Screenshots geposted, in denen die fertige Lösung zu sehen war.

Btw. immer wieder schön mit einem Troll zu schreiben ;)
 

NiXPhoE

Gesperrter Benutzer
Sorry, ich bin kein Troll! Mit deiner Hilfe kann ich nix anfangen, weil es kein Hack ist! Erst eine falsche Lösung präsentieren und dann mobben ist kriminell!!!!
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
A Ungewollte Layout änderungen AWT, Swing, JavaFX & SWT 3
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
N Swing Layout positionieren AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3
M SWT Breite von Textfeld nur ohne Layout änderbar AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben