JScrollPane und Button erscheinen nicht

JavaGamer

Bekanntes Mitglied
Hallo, ich bin gerade dabei ein kleines Programm zu schreiben, aber leider wird nun bei diesem Programm die benötigte JScrollPane nicht angezeigt.

Hier ist mein Code:
Java:
public class NewsHandler 
{
	
	private String file = "news.html";
	
	public NewsHandler()
	{
		this.getNews();
	}
	
	@SuppressWarnings("unused")
	private void getNews()
	{
		// sets the editable to false for the JEditorPane that you could not edit it
		Launcher.editNews = new JEditorPane();
		Launcher.editNews.setEditable(false);
		Launcher.editNews.setBackground(Color.DARK_GRAY);
		Launcher.editNews.setSize(858, 284);
		Launcher.editNews.setBounds(0, 60, 858, 319);
		//news.setBounds(0, 60, 429, 319);
		
		java.io.File nfile = new java.io.File(file);
		// checks if the file exits
		if(nfile.isFile() || !nfile.canRead())
		{
			// sets the URL (location for the .html file)
			try
			{
				//java.net.URL newsURL = new java.net.URL(file);
				File newsURL = new File(file);
				
				if(newsURL != null)
				{
					try 
					{
						Launcher.editNews.setPage(newsURL.toURI().toURL());
					} 
					catch (IOException ex)
					{
						JOptionPane.showMessageDialog(null, "Attempted to read a bad URL: " + newsURL, "Error", JOptionPane.ERROR_MESSAGE);
						JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
				}
				else
				{
					JOptionPane.showMessageDialog(null, "Couldn't find file: " + file, "Error", JOptionPane.ERROR_MESSAGE);
				}
				//java.net.URL helpURL = NewsHandler.class.getResource("TextSamplerDemoHelp.html");
			} 
			catch (/*MalformedURLException e*/ Exception e)
			{
				JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
				e.printStackTrace();
			}
			finally
			{
				//Put the editor pane in a scroll pane.
				//JScrollPane editorScrollPane = new JScrollPane(Launcher.editNews);
				JScrollPane scrollPane = new JScrollPane();
				scrollPane.setViewportView(Launcher.editNews);
				scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
				//scrollPane.setPreferredSize(new Dimension(250, 145));
				//scrollPane.setMinimumSize(new Dimension(10, 10));
			}
		}
		else
		{
			this.downloadNews();
		}
	}
Das JEditorPane editNews wird in einer anderen Klasse hinzugefügt zum Window.
Für eine Sekunde erscheint beim Start der Anwendung ein Fehler und im Debug-Mode steht unter Breakpoint automatisch: "ArrayIndexOutOfBoundsException:caught and uncaugt" und "NullPointerException: caught and uncaught".
Leider kann ich mit diesen Fehlern nichts anfangen, da keine Zeilenangaben vorhanden sind und ich nicht weiss was diese Bedeuten.

Zudem wird ein Button auch nicht angezeigt:

Java:
		// sets the size of the box and the color of the frame (= Rahmen)
		this.play.setSize(125, 568);
		this.play.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.play.setBounds(0, 379, 858, 70);
Java:
this.play.add(launch);
Java:
		if(nwpanelbl == true && otpanelbl == false && mdpanelbl == false && txpanelbl == false)
		{
			new volcanoplayer.launcher.news.NewsHandler();
			
			//panel.remove(packs);
			//panel.remove(info);
			
			nwpanel.setBackground(Color.DARK_GRAY);
			
			nwpanel.setLayout(null);
			nwpanel.add(Launcher.editNews);
			nwpanel.add(options);
			nwpanel.add(play);
			
			frames.getContentPane().add(nwpanel);
			//panel.add(nwpanel);
			
			//nwpanel.validate();
			//panel.validate();
		}

Ich hoffe ihr könnt mir hierbei helfen.
JavaGamer
 

JavaGamer

Bekanntes Mitglied
Ich habe jetzt ein wenig am Code rumgebastelt und jetzt wird zwar der Button und die JScrollPane angezeigt aber das JEditorPane wird nur noch als ganz schmaller grauer Balken links neben dem JScrollPane angezeigt, so dass der Inhalt nicht angezeigt wird und dadurch dann die JScrollPane überflüssig wird, da ja garnichts mehr angezeigt wird an Text ....

Hier ist mein Code:
Java:
		//Put the editor pane in a scroll pane.
		scrollPane = new JScrollPane();
		scrollPane.setBounds(818, 59, 20, 318);
		{
			// sets the editable to false for the JEditorPane that you could not edit it
			Launcher.editNews = new JEditorPane();
			Launcher.editNews.setEditable(false);
			Launcher.editNews.setBackground(Color.GRAY);
			//Launcher.editNews.setSize(858, 284);
			Launcher.editNews.setBounds(0, 60, 858, 319);
			//setBounds(x, y, width, height)
			
			scrollPane.setViewportView(Launcher.editNews);
		}
und in der Main-Class:
Java:
			nwpanel.setBackground(Color.DARK_GRAY);
			
			nwpanel.setLayout(null);
			//nwpanel.add(Launcher.editNews);
			nwpanel.add(NewsHandler.scrollPane);
			nwpanel.add(options);
			nwpanel.add(play);
			
			frames.getContentPane().add(nwpanel);

Ich hoffe ihr könnt mir hierbei helfen. (Ich habe auch schon im Internet gesucht und in meinen Java Büchern nachgeschaut aber nichts hat geholfen. :( )

JavaGamer
 

MrClave

Bekanntes Mitglied
Wie kann man denn bitte GAR NICHTS über JScrollPanes finden? ???:L
Wenn man einfach JScrollPane bei Google eingibt, findet man sofort 1.000.000 brauchbare Ergebnisse.
Hier ein konkretes Beispiel: JScrollPane

----------------

Deine Koordinaten sehen sehr merkwürdig aus.
Die JScrollPane startet bei x = 818 und y = 59, und die JEditorPane liegt auf x = 0 und y = 60. Zudem haben sie komplett andere Breiten- und Höhenwerte. :bahnhof:

Aber wie auch immer. Man verwendet kein Null-Layout, sprich absolutes positionieren durch .setBounds().
Lies dich in die gängigsten LayoutManager ein, wie z.B. FlowLayout, BorderLayout, GridLayout, GridBagLayout und CardLayout.
 

JavaGamer

Bekanntes Mitglied
Wie kann man denn bitte GAR NICHTS über JScrollPanes finden? ???:L
Wenn man einfach JScrollPane bei Google eingibt, findet man sofort 1.000.000 brauchbare Ergebnisse.
Hier ein konkretes Beispiel: JScrollPane

----------------

Deine Koordinaten sehen sehr merkwürdig aus.
Die JScrollPane startet bei x = 818 und y = 59, und die JEditorPane liegt auf x = 0 und y = 60. Zudem haben sie komplett andere Breiten- und Höhenwerte. :bahnhof:

Aber wie auch immer. Man verwendet kein Null-Layout, sprich absolutes positionieren durch .setBounds().
Lies dich in die gängigsten LayoutManager ein, wie z.B. FlowLayout, BorderLayout, GridLayout, GridBagLayout und CardLayout.

Also gefunden habe ich auch vieles zum Thema JScrollPane aber nichts, was mein Problem löst. Das meiste dass ich gefunden habe waren einfach nur eine JScrollPane mit Listen, aber ich möchte hier ja keine Listen haben, sondern eine JScrollPane für den News bereich und später noch eine für den Info Bereich. (Vielleicht später auch noch eine dritte für ein Menü zum Auswählen wie ein Drop-Down-Menü, nur halt fest eingebaut im Fenster, das man sieht, was man ausgewählt hat und daneben dann das Info Fenster mit Changelog, kurze Information, was dies ist und Screenshots)

Zudem soll die JScrollPane ganz links am Rand sein und die JEditorPane soll rechts beginnen und dann komplett links enden. Darunter und darüber befinden sich mehrere Boxen mit Buttons wie "Launch", "Options", "News" usw.

Die LayoutManager habe ich mir schon angeschaut und bei vielen anderen Programmen arbeite ich auch damit aber so wirklich was passendes habe ich für diese Anwendung nicht gefunden. Momentan könnte ich zwar einen LayoutManager verwenden, aber an einigen Stellen wüsste ich nicht welchen ich nehmen sollte.
 

MrClave

Bekanntes Mitglied
Die LayoutManager habe ich mir schon angeschaut und bei vielen anderen Programmen arbeite ich auch damit aber so wirklich was passendes habe ich für diese Anwendung nicht gefunden.
LayoutManager passen immer. Man muss die Komponenten nur richtig verschachteln.

Also gefunden habe ich auch vieles zum Thema JScrollPane aber nichts, was mein Problem löst. Das meiste dass ich gefunden habe waren einfach nur eine JScrollPane mit Listen, aber ich möchte hier ja keine Listen haben, sondern eine JScrollPane für den News bereich und später noch eine für den Info Bereich.
Dann hast du die Artikel wohl alle nicht richtig verstanden.
Ließ sie dir nochmal richtig durch, und mach ein kleines Test Projekt, wo du nur mit JEditorPane und JScrollPane rumspielst.
Den ganzen anderen Mist einmal abkapseln.

Falls du es dann immer noch nicht verstehst, kannst du ja mal ein Bild posten, wie genau du es haben willst.
Dann kann ich dir ein wenig auf die Sprünge helfen.
 

JavaGamer

Bekanntes Mitglied
LayoutManager passen immer. Man muss die Komponenten nur richtig verschachteln.


Dann hast du die Artikel wohl alle nicht richtig verstanden.
Ließ sie dir nochmal richtig durch, und mach ein kleines Test Projekt, wo du nur mit JEditorPane und JScrollPane rumspielst.
Den ganzen anderen Mist einmal abkapseln.

Falls du es dann immer noch nicht verstehst, kannst du ja mal ein Bild posten, wie genau du es haben willst.
Dann kann ich dir ein wenig auf die Sprünge helfen.

Ok. Also ich habe jetzt den Fehler gefunden und behoben. (Musste einfach nur die Bounds gleich machen beim EditorPane und beim ScrollPane.)

Jetzt habe ich aber ein neues Problem bzw. eine Frage.
Indirket habe ich diese Frage schon mal oben erwähnt, aber nun ja...
Also ich möchte ja verschiedene Bereiche haben, wie z.B. beim Minecraft Launcher oder dem FTB Launcher.
Und meine Frage jetzt, was muss ich an meinem Code ändern bzw. was muss ich überhaupt machen, damit ich wenn ich auf den Button Modpacks klicke, dass dann auch dass daszugehörige JPanel angezeigt wird mit Inhalt und wenn ich auf den Button News klicke, dass dann wieder das dem entsprechende JPanel angezeigt wird. Also wie bei einem Game, dass wenn ich einen Button klicke das Untermenü angezeigt wird und alles andere nicht mehr angezeigt wird ....

Hier ist mein Code:
Java:
package volcanoplayer.launcher;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;

import volcanoplayer.launcher.actionListener.ButtonListener;
import volcanoplayer.launcher.modpacks.TableData;
import volcanoplayer.launcher.news.NewsHandler;

public class Launcher implements TableData
{
	/**
	 * 
	 */
	//private static final long serialVersionUID = 1L;
	
	// sets the title and the version number
	private static String title = "Spekto Launcher v";
	private static String versions = "0.0.1";
	
	// scale of the Game
	public static int width = 300;
	public static int height = width / 16 * 9;
	public static int scale = 3;
	
	// creates the layout with boxes
	private Box options, packs, info, play;
	
	// creates the buttons
	public static JButton modpacks, option, texturepacks, news, spekto, launch;
	
	// creates the JTable
	private JTable table = new JTable(DATA, COLHEADS);
	
	// creates the main JPanel
	private static JPanel panel = new JPanel();
	
	// creates the JPanel for the news task
	public static JPanel nwpanel = new JPanel();
	
	// creates the JPanel for the options task
	public static JPanel otpanel = new JPanel();
	
	// creates the JPanel for the mod packs task
	public static JPanel mdpanel = new JPanel();
	
	// creates the JPanel for the texture pack task
	public static JPanel txpanel = new JPanel();
	
	// creates the booleans for the Buttons
	public static boolean nwpanelbl = true;
	public static boolean otpanelbl = false;
	public static boolean mdpanelbl = false;
	public static boolean txpanelbl = false;
	
	public static JEditorPane editNews;
	
	//private static int widthSize = width * scale;
	//private static int heightSize = height * scale;
	
	public Launcher()
	{
		super();
		
		/**
		 * Löschfunktion für Benutzerkonten
		 */
		
		// creates the icon Image and the resource path
		ImageIcon icon = null;
		try
		{
			icon = new ImageIcon(getClass().getResource("SLE.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		//Image icon = Toolkit.getDefaultToolkit().getImage("resources/textures/SLE.png");
		// creates the new window
		JFrame frames = new JFrame();
		// sets the title of the window
		frames.setTitle(Launcher.title + versions);
		// creates the JPanel (the basics for the graphical interface)
		panel = new JPanel();
		
		// sets the Icon for the window
		frames.setIconImage(icon.getImage());
		// removes the windows minimize, maximize and close operation
		//frames.setUndecorated(true);
		// sets the size of the window
		frames.setSize(875, 482);
		// sets the default close operation of the window
		frames.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frames.setLocationRelativeTo(null);
		// sets the layout for the window
		frames.setLayout(new BorderLayout(0, 0));
	
		// sets the background color of the window
		//frames.getContentPane().setBackground(Color.DARK_GRAY);
		
		// sets the background color of the graphical interface
		panel.setBackground(Color.DARK_GRAY);
		
		// loads the icons for the buttons
		new volcanoplayer.launcher.graphics.RenderIcons();
		
		// sets the size of the buttons	
		/** TODO Will not work at this time ... */
		/*news.setPreferredSize(new Dimension(125, 125));
		option.setPreferredSize(new Dimension(125, 125));
		modpacks.setPreferredSize(new Dimension(125, 125));
		texturepacks.setPreferredSize(new Dimension(125, 125));
		launch.setPreferredSize(new Dimension(125, 125));*/
		
		// updates the window
		panel.validate();
		frames.validate();
		
		// sets the buttons color
		news.setBackground(Color.DARK_GRAY);
		option.setBackground(Color.DARK_GRAY);
		modpacks.setBackground(Color.DARK_GRAY);
		texturepacks.setBackground(Color.DARK_GRAY);
		launch.setBackground(Color.GRAY);
		
		// sets the action listener for every button
		news.addActionListener(new ButtonListener());
		option.addActionListener(new ButtonListener());
		modpacks.addActionListener(new ButtonListener());
		texturepacks.addActionListener(new ButtonListener());
		launch.addActionListener(new ButtonListener());
		
		// remove the frame from the buttons
		//option.setBorderPainted(false);
		
		// adds the boxes to the window
		this.options = Box.createHorizontalBox();
		this.packs = Box.createVerticalBox();
		this.info = Box.createVerticalBox();
		this.play = Box.createHorizontalBox();
		
		// configure the table
		this.table.setSize(284, 568);
		
		// sets the size of the box and the color of the frame (= Rahmen)
		this.options.setSize(125, 568);
		this.options.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.options.setBounds(0, 0, 858, 60);
		//options.setBounds(0, 0, 50, 568);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.packs.setSize(284, 568);
		this.packs.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.packs.setBounds(0, 60, 429, 319);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.info.setSize(568, 284);
		this.info.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.info.setBounds(429, 60, 429, 319);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.play.setSize(125, 568);
		this.play.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.play.setBounds(0, 379, 858, 70);
		
		// adds everything to the boxes
		this.options.add(news);
		this.options.add(option);
		this.options.add(modpacks);
		this.options.add(texturepacks);
		this.packs.add(table);
		this.play.add(launch);
		
		panel.setLayout(null);
		// adds everything to the JPanel
		panel.add(options);
		//public static boolean nwpanelbl = true;
		//public static boolean otpanelbl = false;
		//public static boolean mdpanelbl = false;
		//public static boolean txpanelbl = false;
		
		/**
		 *	sets the GUI for every "window" in the "main-window"
		 *	
		 *	for example:
		 *
		 *	@if nwpanelbl == true
		 *	
		 *	@return It returns everything that you can see in the window
		 */
		if(nwpanelbl == true && otpanelbl == false && mdpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			new volcanoplayer.launcher.news.NewsHandler();
			
			// sets the background
			nwpanel.setBackground(Color.DARK_GRAY);
			
			// sets the layout and adds everything
			nwpanel.setLayout(null);
			nwpanel.add(NewsHandler.scrollPane);
			nwpanel.add(options);
			nwpanel.add(play);
			
			frames.getContentPane().add(nwpanel);
		}
		else if(otpanelbl == true && nwpanelbl == false && mdpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			otpanel.setLayout(null);
			otpanel.add(options);
			otpanel.add(play);
			
			frames.getContentPane().add(otpanel);
		}
		else if(mdpanelbl == true && nwpanelbl == false && otpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			mdpanel.setLayout(null);
			mdpanel.add(options);
			mdpanel.add(play);
			
			frames.getContentPane().add(mdpanel);
		}
		else if(txpanelbl == true && nwpanelbl == false && otpanelbl == false && mdpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			txpanel.setLayout(null);
			txpanel.add(options);
			txpanel.add(play);
			
			frames.getContentPane().add(txpanel);
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Something went wrong while drawing the frame!", "Error", JOptionPane.ERROR_MESSAGE);
			
			try
			{
				Thread.sleep(200);
			}
			catch (InterruptedException e)
			{
				JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
			}
			finally
			{
				System.exit(0);
			}
		}
		
		// sets the postion from the window (same as frames.setLocation(500, 500);  )
		frames.setLocationRelativeTo(null); 
		// if this is "true", then the window is visible
		// if not, then the window is invisible
		frames.setVisible(true);
	}
}

Leider habe ich keine Idee, wie ich dies realisieren könnte ausser diese, die ich hier oben im Code eingebaut habe, nur dies funktioniert nicht.

JavaGamer
 

MrClave

Bekanntes Mitglied
Ohne Bilder kann man sich nur hinraten, was du willst.

Der Code... Naja.
Dazu könnte ich jetzt viel böses sagen, aber ich mach's mal kurz.

Wozu ist alles static?
Hast du etwa alle OOP Grundlagen übersprungen?

Wieso ist alles ein Member, nur der JFrame nicht?
Das ergibt überhaupt keinen Sinn.

Ellenlanger Code im Konstruktor. Kann man zwar machen, ist aber nicht sonderlich schön meiner Meinung nach. Da hätte man schöne Methoden verwenden können, wie z.B.
Code:
private void initComponents() { ... }
, welche sich um das initialisieren der Komponenten kümmert.

Kommentare schön und gut. Aber nicht für jede Zeile. Und erst recht nicht für Dinge, wie .setTitle().
Das stört den Lesefluss ungemein.


Das, was ich jetzt unmittelbar vorschlagen könnte, wäre eine JTabbedPane oder das CardLayout.
Wie man sie benutzt, steht überall auf Google und YouTube, falls du lieber Videos guckst.

Musste einfach nur die Bounds gleich machen beim EditorPane und beim ScrollPane.
Nein, muss man nicht.
setViewportView() setzt die Komponente auf die selbe Größe, wie die JScrollPane.
Wenn du den Viewport gesetzt hast, liegt die Komponente IN der JScrollPane. Du musst also NUR die JScrollPane dem JFrame hinzufügen. Niemals beide!

Die Artikel nicht nur überfliegen, sondern auch wirklich lesen! Sonst wird das nichts, wie du siehst.
 
Zuletzt bearbeitet:

JavaGamer

Bekanntes Mitglied
Ohne Bilder kann man sich nur hinraten, was du willst.

Der Code... Naja.
Dazu könnte ich jetzt viel böses sagen, aber ich mach's mal kurz.

Wozu ist alles static?
Hast du etwa alle OOP Grundlagen übersprungen?

Wieso ist alles ein Member, nur der JFrame nicht?
Das ergibt überhaupt keinen Sinn.

Ellenlanger Code im Konstruktor. Kann man zwar machen, ist aber nicht sonderlich schön meiner Meinung nach. Da hätte man schöne Methoden verwenden können, wie z.B.
Code:
private void initComponents() { ... }
, welche sich um das initialisieren der Komponenten kümmert.

Kommentare schön und gut. Aber nicht für jede Zeile. Und erst recht nicht für Dinge, wie .setTitle().
Das stört den Lesefluss ungemein.


Das, was ich jetzt unmittelbar vorschlagen könnte, wäre eine JTabbedPane oder das CardLayout.
Wie man sie benutzt, steht überall auf Google und YouTube, falls du lieber Videos guckst.


Nein, muss man nicht.
setViewportView() setzt die Komponente auf die selbe Größe, wie die JScrollPane.
Wenn du den Viewport gesetzt hast, liegt die Komponente IN der JScrollPane. Du musst also NUR die JScrollPane dem JFrame hinzufügen. Niemals beide!

Die Artikel nicht nur überfliegen, sondern auch wirklich lesen! Sonst wird das nichts, wie du siehst.

Also überarbeitet mit der Methode
Code:
private void initComponents() { ... }
habe ich schon vieles, in dem ich jetzt dort den GUI Kramm reingepackt habe. Aber viel übersichtlicher siehts auch nicht gerade aus.

Ich habe jetzt überall das static entfernt, sofern dies nicht zu Fehlern führt.
Nein, ich habe nicht alle OOP Grundlagen übersprungen. Meine anderen Klassen sehen eh übersichtlicher aus, nur meine Hauptklasse mit dem JFrame sieht eigentlich nie übersichtlich aus, da ich meist daran scheitere.

Du kannst meinen Code zu viel kritisieren, wie du möchtest, Kritik nehme ich mir gerne zu herzen, sofern da auch Ansätze drin stehen, wie ich dies besser machen könnte.

Ich hoffe, dieser Code sieht jetzt besser und mehr nach OOP aus.

Java:
package volcanoplayer.launcher;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;

import volcanoplayer.launcher.actionListener.ButtonListener;
import volcanoplayer.launcher.modpacks.TableData;
import volcanoplayer.launcher.news.NewsHandler;

public class Launcher implements TableData
{
	/**
	 * 
	 */
	//private static final long serialVersionUID = 1L;
	
	// sets the title and the version number
	private String title = "Spekto Launcher v";
	private String versions = "0.0.1";
	
	private JFrame frames;
	
	// scale of the Game
	public int width = 300;
	public int height = width / 16 * 9;
	public int scale = 3;
	
	// creates the layout with boxes
	private Box options, packs, info, play;
	
	// creates the buttons
	public static JButton modpacks, option, texturepacks, news, spekto, launch;
	
	// creates the JTable
	private JTable table = new JTable(DATA, COLHEADS);
	
	// news task
	public JPanel nwpanel = new JPanel();
	
	// options task
	public JPanel otpanel = new JPanel();
	
	// mod packs task
	public JPanel mdpanel = new JPanel();
	
	// texture pack task
	public JPanel txpanel = new JPanel();
	
	// creates the booleans for the Buttons
	public static boolean nwpanelbl = true;
	public static boolean otpanelbl = false;
	public static boolean mdpanelbl = false;
	public static boolean txpanelbl = false;
	
	public static JEditorPane editNews;
	
	//private static int widthSize = width * scale;
	//private static int heightSize = height * scale;
	
	public Launcher()
	{
		super();
		
		/**
		 * Löschfunktion für Benutzerkonten
		 */
		
		// creates the icon Image and the resource path
		ImageIcon icon = null;
		try
		{
			icon = new ImageIcon(getClass().getResource("SLE.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		frames = new JFrame();
		frames.setTitle(title + versions);
		
		// sets the Icon for the window
		frames.setIconImage(icon.getImage());
		frames.setSize(875, 482);
		frames.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frames.setLocationRelativeTo(null);
		// sets the layout for the window
		frames.setLayout(new BorderLayout(0, 0));
		
		// everything for the GUI
		initComponents();
		
		// loads the icons for the buttons
		new volcanoplayer.launcher.graphics.RenderIcons();
		
		// updates the window
		frames.validate();
		
		// sets the postion from the window (same as frames.setLocation(500, 500);  )
		frames.setLocationRelativeTo(null); 
		frames.setVisible(true);
	}
	
	private void initComponents() 
	{
		// sets the buttons color
		news.setBackground(Color.DARK_GRAY);
		option.setBackground(Color.DARK_GRAY);
		modpacks.setBackground(Color.DARK_GRAY);
		texturepacks.setBackground(Color.DARK_GRAY);
		launch.setBackground(Color.GRAY);
		
		// sets the action listener for every button
		news.addActionListener(new ButtonListener());
		option.addActionListener(new ButtonListener());
		modpacks.addActionListener(new ButtonListener());
		texturepacks.addActionListener(new ButtonListener());
		launch.addActionListener(new ButtonListener());
		
		// remove the frame from the buttons
		//option.setBorderPainted(false);
		
		// adds the boxes to the window
		this.options = Box.createHorizontalBox();
		this.packs = Box.createVerticalBox();
		this.info = Box.createVerticalBox();
		this.play = Box.createHorizontalBox();
		
		// configure the table
		this.table.setSize(284, 568);
		
		// sets the size of the box and the color of the frame (= Rahmen)
		this.options.setSize(125, 568);
		this.options.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.options.setBounds(0, 0, 858, 60);
		//options.setBounds(0, 0, 50, 568);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.packs.setSize(284, 568);
		this.packs.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.packs.setBounds(0, 60, 429, 319);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.info.setSize(568, 284);
		this.info.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.info.setBounds(429, 60, 429, 319);
		// sets the size of the box and the color of the frame (= Rahmen)
		this.play.setSize(125, 568);
		this.play.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		this.play.setBounds(0, 379, 858, 70);
		
		// adds everything to the boxes
		this.options.add(news);
		this.options.add(option);
		this.options.add(modpacks);
		this.options.add(texturepacks);
		this.packs.add(table);
		this.play.add(launch);
		
		/**
		 *	sets the GUI for every "window" in the "main-window"
		 *	
		 *	for example:
		 *
		 *	@if nwpanelbl == true
		 *	
		 *	@return It returns everything that you can see in the window
		 */
		if(nwpanelbl == true && otpanelbl == false && mdpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			new volcanoplayer.launcher.news.NewsHandler();
			
			// sets the background
			nwpanel.setBackground(Color.DARK_GRAY);
			
			// sets the layout and adds everything
			nwpanel.setLayout(null);
			nwpanel.add(NewsHandler.scrollPane);
			nwpanel.add(options);
			nwpanel.add(play);
			
			frames.getContentPane().add(nwpanel);
		}
		else if(otpanelbl == true && nwpanelbl == false && mdpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			otpanel.setLayout(null);
			otpanel.add(options);
			otpanel.add(play);
			
			frames.getContentPane().add(otpanel);
		}
		else if(mdpanelbl == true && nwpanelbl == false && otpanelbl == false && txpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			mdpanel.setLayout(null);
			mdpanel.add(options);
			mdpanel.add(play);
			
			frames.getContentPane().add(mdpanel);
		}
		else if(txpanelbl == true && nwpanelbl == false && otpanelbl == false && mdpanelbl == false)
		{
			// removes everything
			nwpanel.removeAll();
			otpanel.removeAll();
			mdpanel.removeAll();
			txpanel.removeAll();
			frames.getContentPane().removeAll();
			
			// sets the layout and adds everything
			txpanel.setLayout(null);
			txpanel.add(options);
			txpanel.add(play);
			
			frames.getContentPane().add(txpanel);
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Something went wrong while drawing the frame!", "Error", JOptionPane.ERROR_MESSAGE);
			
			try
			{
				Thread.sleep(200);
			}
			catch (InterruptedException e)
			{
				JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
			}
			finally
			{
				System.exit(0);
			}
		}
	}
}

Hier noch ein Beispiel einer anderen Klasse von mir (diese dürfte mehr nach OOP aussehen):
Java:
package volcanoplayer.launcher.graphics;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import volcanoplayer.launcher.Launcher;

public class RenderIcons
{
	
	// creates the Icon
	private ImageIcon iconNews = null;
	private ImageIcon iconOption = null;
	private ImageIcon iconModpacks = null;
	private ImageIcon iconTexturepacks = null;

	public RenderIcons()
	{
		this.getButtons();
		this.getIcons();
	}

	private void getIcons() 
	{
		// sets everything to the buttons
		Launcher.news = new JButton(iconNews);
		Launcher.option = new JButton(iconOption);
		Launcher.modpacks = new JButton(iconModpacks);
		Launcher.texturepacks = new JButton(iconTexturepacks);
		Launcher.spekto = new JButton("Spekto");
		Launcher.launch = new JButton("Launch");
	}
	
	private void getButtons()
	{
		// loads the button graphics
		try
		{
			iconNews = new ImageIcon(getClass().getResource("textures/icons/news.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		try
		{
			iconOption = new ImageIcon(getClass().getResource("textures/icons/option.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		try
		{
			iconModpacks = new ImageIcon(getClass().getResource("textures/icons/modpacks.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		try
		{
			iconTexturepacks = new ImageIcon(getClass().getResource("textures/icons/texturepacks.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
	}
}


Hier ein Bild von dem, was ich machen möchte: (--> siehe Anhang)

JavaGamer
 

Anhänge

  • FTB-Launcher.jpg
    FTB-Launcher.jpg
    112,7 KB · Aufrufe: 40
Zuletzt bearbeitet:

MrClave

Bekanntes Mitglied
Aber viel übersichtlicher siehts auch nicht gerade aus.
Das sieht eher danach aus, als hättest per Zufall irgendwas in die Methode kopiert.

Viel lesbarer wie du siehst.
Java:
public class GUI {

	private int width, height;

	private JFrame frame;
	private JButton btnSayHello;

	public GUI( String frameTitle ) {

		width = 800; // könnte man natürlich aus Files laden, oder als Parameter entgegennehmen
		height = 600;

		initComponents( frameTitle );
		setupComponents( );
		addComponents( );
	
	}

	private void initComponents( String frameTitle ) {

		frame = new JFrame( frameTitle );
		btnSayHello = new JButton( "Hello" );

	}

	private void setupComponents( ) {

		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setSize( new Dimension( width, height );
		frame.setLocationRelativeTo( null );
		frame.setLayout( new FlowLayout( ) );

		btnSayHello.addActionListener( new MyListener( ) );	

	}

	private void addComponents( ) {

		frame.add( btnSayHello );

	}

	public int getWidth( ) { return width; }
	public void setWidth( int width ) { this.width = width; }


	private class MyListener implements ActionListener { ... }

}

Du hast außerdem zwei mal .setLocationRelativeTo(null); in deinem Code. Eine typische Folge von mangelnder Struktur.
Und generell solltest du dir die API besser ansehen.
Ein JFrame kann z.B. den Titel direkt im Konstruktor entgegennehmen.
.setBounds überschreibt .setSize, bzw. bietet die selbe Funktion an. Macht also keinen Sinn beides zu verwenden. Und schon gar nicht mit vollkommen verschiedenen Werten.
Java:
         this.options.setSize(125, 568);
        this.options.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        this.options.setBounds(0, 0, 858, 60); // Wie kommt man von 125, 568 auf 858, 60 ?

Die Klasse RenderIcons ist meiner Meinung nach total Unsinnig!
Wieso deklarierst du deine Buttons in der Launcher Klasse, wenn du sie in einer ganz anderen initialisierst? Den Code solltest du in die Launcher Klasse packen.
Auslagerung verwirrt hier nur und ist auch nicht schön in diesem Fall.

Du kannst dir eine universelle Hilfsklasse basteln, die sich um das Laden von Grafiken kümmert, aber nicht so'n Quatsch, wie du ihn jetzt da stehen hast.

Wie du sicher auch schon gesehen hast, hast du 4x den gleichen Code, um Bilder zu laden.
Hier wäre es doch eine gute Idee, das ganze zu refactoren und eine Methode zu erstellen, die einen Pfad entgegennimmt und eine Grafik zurückgibt.
Somit würdest du doppelten Code umgehen.

Über Exception Handling hast du offensichtlich auch noch nichts gelesen. Nicht sonderlich schlimm hier, aber später von relativ hoher Bedeutung.
Insgesamt gäbe es noch sehr viele Dinge, die ich dir mit auf den Weg geben könnte. Aber das würde jetzt den Rahmen sprengen.
Hier fehlt dir glaube ich einfach die Erfahrung. Wird aber mit der Zeit alles kommen. :toll:

Zum Bild:
Das ist eine JTabbedPane.
Wie man sie benutzt, steht auf Google :rtfm: :toll:
 
Zuletzt bearbeitet:

JavaGamer

Bekanntes Mitglied
Das sieht eher danach aus, als hättest per Zufall irgendwas in die Methode kopiert.

Viel lesbarer wie du siehst.
Java:
public class GUI {

	private int width, height;

	private JFrame frame;
	private JButton btnSayHello;

	public GUI( String frameTitle ) {

		width = 800; // könnte man natürlich aus Files laden, oder als Parameter entgegennehmen
		height = 600;

		initComponents( frameTitle );
		setupComponents( );
		addComponents( );
	
	}

	private void initComponents( String frameTitle ) {

		frame = new JFrame( frameTitle );
		btnSayHello = new JButton( "Hello" );

	}

	private void setupComponents( ) {

		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setSize( new Dimension( width, height );
		frame.setLocationRelativeTo( null );
		frame.setLayout( new FlowLayout( ) );

		btnSayHello.addActionListener( new MyListener( ) );	

	}

	private void addComponents( ) {

		frame.add( btnSayHello );

	}

	public int getWidth( ) { return width; }
	public void setWidth( int width ) { this.width = width; }


	private class MyListener implements ActionListener { ... }

}

Du hast außerdem zwei mal .setLocationRelativeTo(null); in deinem Code. Eine typische Folge von mangelnder Struktur.
Und generell solltest du dir die API besser ansehen.
Ein JFrame kann z.B. den Titel direkt im Konstruktor entgegennehmen.
.setBounds überschreibt .setSize, bzw. bietet die selbe Funktion an. Macht also keinen Sinn beides zu verwenden. Und schon gar nicht mit vollkommen verschiedenen Werten.
Java:
         this.options.setSize(125, 568);
        this.options.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        this.options.setBounds(0, 0, 858, 60); // Wie kommt man von 125, 568 auf 858, 60 ?

Die Klasse RenderIcons ist meiner Meinung nach total Unsinnig!
Wieso deklarierst du deine Buttons in der Launcher Klasse, wenn du sie in einer ganz anderen initialisierst? Den Code solltest du in die Launcher Klasse packen.
Auslagerung verwirrt hier nur und ist auch nicht schön in diesem Fall.

Du kannst dir eine universelle Hilfsklasse basteln, die sich um das Laden von Grafiken kümmert, aber nicht so'n Quatsch, wie du ihn jetzt da stehen hast.

Wie du sicher auch schon gesehen hast, hast du 4x den gleichen Code, um Bilder zu laden.
Hier wäre es doch eine gute Idee, das ganze zu refactoren und eine Methode zu erstellen, die einen Pfad entgegennimmt und eine Grafik zurückgibt.
Somit würdest du doppelten Code umgehen.

Über Exception Handling hast du offensichtlich auch noch nichts gelesen. Nicht sonderlich schlimm hier, aber später von relativ hoher Bedeutung.
Insgesamt gäbe es noch sehr viele Dinge, die ich dir mit auf den Weg geben könnte. Aber das würde jetzt den Rahmen sprengen.
Hier fehlt dir glaube ich einfach die Erfahrung. Wird aber mit der Zeit alles kommen. :toll:

Zum Bild:
Das ist eine JTabbedPane.
Wie man sie benutzt, steht auf Google :rtfm: :toll:

Danke. :applaus: Jetzt sieht mein Code definitiv übersichtlicher aus. Und dass mit der fehlenden Erfahrung hast du auch recht (dass hier ist eigentlich mein erstes großes Projekt, bisher habe ich immer nur sowas kleines wie ein simplen Tachenrechner mit ein paar Zusatzfunktionen erstellt). :D

Die unterschiedlichen Werte, die du erwähnst hast kommen wahrscheinlich durch ständiges Überarbeitung und umbauen um neue Ideen und Funktionen hinzuzufügen :)

Was könnte ich eigentlich am Exception Handling besser machen?

Das mit den Grafiken laden hast du natürlich recht, nur ich habe leider keine Idee, wie dass machen kann. Alles was ich bisher versucht habe führt nur wieder zu Fehlern. (Der eine Teil sagt dann das muss aber ein String sein und dann mekert eclipse an ner anderen Stelle und sagt, nein das muss ein ImageIcon sein ..... und dann auch noch dass:
Java:
iconNews = new ImageIcon(getClass().getResource("textures/icons/news.png"));
(iconNews = .....) :bahnhof:
Hättest du da vielleicht noch eine Idee?

JavaGamer
 

JavaGamer

Bekanntes Mitglied
Noch eine kleine Frage, wieso kommt dort jetzt immer
Code:
java.lang.NullPointerException
?

Dabei habe ich doch eigentlich dem JFrame einen Title übergeben:

Java:
	public static String title = "Spekto Launcher v";
	public static String versions = "0.0.1";

	public GUI(String frameTitle)
	{
		width = 875;
		height = 482;
		
		initComponents(frameTitle);
		setupComponents();
		renderIcons();
		loadIcons();
		addComponents();
	}

	private void initComponents(String frameTitle)
	{
		frame = new JFrame(frameTitle);
	}
und
Java:
   new GUI(GUI.title + GUI.versions);

Was ist falsch?

JavaGamer
 

MrClave

Bekanntes Mitglied
Du solltest dir angewöhnen, Code nicht einfach zu kopieren.
Das was du machst ist nämlich unsinnig.

Das mit dem frameTitle im Konstruktor habe ich nur als Beispiel genommen, damit du siehst, wie man auf diese Weise Parameter weiter reichen kann.
Bei dir würde es besser passen, wenn du frameTitle als Parameter entfernst und stattdessen

Java:
frame = new JFrame(title + versions);

schreibst.
Zudem sollten diese Member private sein. Dazu dann noch getter und setter anbieten, damit man sie von außen manipulieren und lesen kann.
So wie es jetzt ist, könntest du es machen, wenn du Titel und Version aus einer Datei lädst.

Zu der NPE: Wo tritt diese auf? In dem von dir geposteten Code ist nämlich alles richtig, soweit ich sehen kann.
 
Zuletzt bearbeitet:

JavaGamer

Bekanntes Mitglied
Du solltest dir angewöhnen, Code nicht einfach zu kopieren.
Das was du machst ist nämlich unsinnig.

Das mit dem frameTitle im Konstruktor habe ich nur als Beispiel genommen, damit du siehst, wie man auf diese Weise Parameter weiter reichen kann.
Bei dir würde es besser passen, wenn du frameTitle als Parameter entfernst und stattdessen

Java:
frame = new JFrame(title + versions);

schreibst.
Zudem sollten diese Member private sein. Dazu dann noch getter und setter anbieten, damit man sie von außen manipulieren und lesen kann.
So wie es jetzt ist, könntest du es machen, wenn du Titel und Version aus einer Datei lädst.

Zu der NPE: Wo tritt diese auf? In dem von dir geposteten Code ist nämlich alles richtig, soweit ich sehen kann.

Nach dem Debug-Mode tritt dieser Fehler anscheinend immer dann auf, wenn ich versuche die Icons für die Buttons aus einem anderen package zu laden...

Java:
	private void renderIcons()
	{
		// loads the button graphics
		try
		{
			// TODO evtl. mit einem Array
			iconNews = new ImageIcon(getClass().getResource("graphics/textures/icons/news.png"));
			iconOption = new ImageIcon(getClass().getResource("graphics/textures/icons/option.png"));
			iconModpacks = new ImageIcon(getClass().getResource("graphics/textures/icons/modpacks.png"));
			iconTexturepacks = new ImageIcon(getClass().getResource("graphics/textures/icons/texturepacks.png"));
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
	}

Was mich aber wundert ist, dass ohne diesen Codeabschnitt sich nicht mal das JFrame öffnet ....
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JScrollPane mit mehreren Panels Allgemeine Java-Themen 1
S Fehler mit JScrollPane Allgemeine Java-Themen 4
S JList mit JScrollPane Allgemeine Java-Themen 6
B JScrollPane und JPanel: Scrollen nur nach Größe des JPanels Allgemeine Java-Themen 2
L JScrollPane Allgemeine Java-Themen 8
S JScrollPane Problem Allgemeine Java-Themen 2
S Hilfe mit JScrollPane Allgemeine Java-Themen 3
R JTextPane (JEditorPane) ignoriert JScrollPane Allgemeine Java-Themen 5
MQue JScrollPane in East Allgemeine Java-Themen 2
P JScrollPane Allgemeine Java-Themen 3
M Nummer eine Componente in JScrollPane ermitteln Allgemeine Java-Themen 4
B JScrollPane in einer JTable aktualisieren? Allgemeine Java-Themen 9
P JTabbedPane in JScrollPane Allgemeine Java-Themen 3
G JTextArea im JScrollpane automatisch mitscrollen Allgemeine Java-Themen 4
N JTable & JScrollPane - Wie den Header anpassen? Allgemeine Java-Themen 4
S JEditorPane / JScrollPane und nach unten scrollen Allgemeine Java-Themen 3
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M JavaFX Button mit mehreren Aktionen? Allgemeine Java-Themen 7
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
Tacofan Button nicht mehr anklickbar machen Allgemeine Java-Themen 8
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
J Java eigenen Button programmieren (ob Cursor im Rechteck ist oder nicht..../button pressed or not) Allgemeine Java-Themen 6
F Klassen Klasse bei Button klick öffnen Allgemeine Java-Themen 11
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
B Button im Web klicken Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
J Swing Eigenes Button-design Allgemeine Java-Themen 2
H WAV abspielen nach Button-Klick Allgemeine Java-Themen 4
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
A Button drücken Allgemeine Java-Themen 3
S Thread anhalten per Button ? Allgemeine Java-Themen 3
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
M HTTP Selenium button klicken Allgemeine Java-Themen 2
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
X Button während Thread aktiv ist disablen Allgemeine Java-Themen 11
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
R [Android]Wie dynamischen Button-Feld erstellen? Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
L mit Button jar.Datei öffnen? Allgemeine Java-Themen 5
1 URL mit Button öffnen Allgemeine Java-Themen 29
L Thread stoppen über Button funktioniert nicht Allgemeine Java-Themen 7
ModellbahnerTT Button mit Zahlen beschriften Allgemeine Java-Themen 1
E JTidy html "hidden" Button drücken Allgemeine Java-Themen 7
G Button-Array überschreiben und dem Container zufügen? Allgemeine Java-Themen 2
G Icon auf Button Allgemeine Java-Themen 5
N Button Allgemeine Java-Themen 3
G Schleife durch Button beenden Allgemeine Java-Themen 6
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
G default button für enter taste Allgemeine Java-Themen 3
T JTabbedPane nach Button-Klick wechseln Allgemeine Java-Themen 3
E Button disablen Allgemeine Java-Themen 8
T Button Array verschieben klappt nicht. Allgemeine Java-Themen 6
T Button Action Allgemeine Java-Themen 10
G swt button Allgemeine Java-Themen 6
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
P Button automatisch drücken Allgemeine Java-Themen 5
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
E Button mit 2zeiliger Beschriftung Allgemeine Java-Themen 3
ElViZ HTML-Button mit Java "drücken" lassen? Allgemeine Java-Themen 3
MQue Button setEnabled() Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
MQue Button Attribute setzen Allgemeine Java-Themen 14
MQue Button ansprechen Allgemeine Java-Themen 5
MQue Button erzeugen mit 3 Klassen Allgemeine Java-Themen 3
MQue Button mit Icon und Beschriftung Allgemeine Java-Themen 7
MQue Button Event beim drücken und beim auslassen Allgemeine Java-Themen 7
P JComponenten (Button, JSlider, usw) erweitern Allgemeine Java-Themen 12
E Button: Event auslösen Allgemeine Java-Themen 7
E Mit Button ein Fenster öffnen Allgemeine Java-Themen 4
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
P invoke per button Allgemeine Java-Themen 5
D Button-Sprache und windowClosing Allgemeine Java-Themen 6
G Text und Bild/Icon im Label/Button positionieren/ausrichten Allgemeine Java-Themen 2
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
D Bild per Button painten Allgemeine Java-Themen 5
V Button schließen - NullPointerException Allgemeine Java-Themen 6
H Button ist nicht ansprechbar Allgemeine Java-Themen 4
S 100 Fehler bei Button machen :) Allgemeine Java-Themen 9
G Fenster durch eigenen Button minimieren Allgemeine Java-Themen 6
N kleine Kommazahlen erscheinen plötzlich Allgemeine Java-Themen 19
S Fehlermeldungen erscheinen erst in der Ausführung des Programms Allgemeine Java-Themen 11
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben