Vragen over GUI klasse's

Status
Niet open voor verdere reacties.

EdjeCageman

Gebruiker
Lid geworden
24 okt 2011
Berichten
273
Mensen,

Ik ben (zoals jullie misschien al gemerkt hebben) bezig met een programma aan 't bouwen van een programma (duh, wat doe je hier anders:confused:)
Maar ik heb een GUI, en hier staan eigenlijk alle handelinge en knoppen van wat er moet gebeuren, dus ook de submenu's:

Beginscherm > koopscherm > stoelkeuzescherm...etc etc...
Systeemmenu > submenu's...
etc...etc...

Dit staat allemaal in 1 klasse, volgens mij is dit niet echt de bedoelling, en hierdoor wordt dus deze klasse een gigantische klasse wat niet echt te overzien is van meer dan 1000 regels code, tja ik heb het mezelf nooit aangeleerd om het anders te doen. Kan iemand mij uitleggen hoe het eigenlijk wel moet.
Eventueel graag met een groff geschetst voorbeeld code.:)

Trouwens, de "eind" methodes worden wel in andere klasses afgevangen.
Dus als voorbeeld een gevonden voorwerpenlijst:

GUI:
Beginscherm > systeemmenu > gevonden voorwerpen > gevonden voorwerpen toevoegen / of verwijderen

Gevondenvoorwerpenlijst:
List met de gevonden voorwerpen

Gevondenvoorwerp
gevonden voorwerp met alle entiteiten

Alvast bedankt voor de moeite die je wilt nemen hiervoor, tijdens dit schitterende weer:p
 
Laatst bewerkt:
Ik kan je er niet mee helpen maar waar ik me altijd over verbaas is dat iemand die een half A4-tje aan tekst intikt het woord "misschien" afkort als "miss".
Ik zou weleens willen weten waarom men dat doet.
Het is niet mijn bedoeling te zeuren over taalgebruik, ik ben oprecht geïnteresseerd in een antwoord op die vraag.

Voor de rest wens ik je ook veel plezier met dit schitterende weer :)
 
Laatst bewerkt:
Ik kan je er niet mee helpen maar waar ik me altijd over verbaas is dat iemand die een half A4-tje aan tekst intikt het woord "misschien" afkort als "miss".
Ik zou weleens willen weten waarom men dat doet.
Het is niet mijn bedoeling te zeuren over taalgebruik, ik ben oprecht geïnteresseerd in een antwoord op die vraag.

Voor de rest wens ik je ook veel plezier met dit schitterende weer :)
omdat het anders een heel a4tje word ;)
 
^ Hierboven snapt het:P En waarom...teveel sms-en denk, was me niet eens opgevallen...
 
Laatst bewerkt:
En wrm ;)
Ok, dank je voor je antwoord :)
 
Even een kickje.

En wat duidelijker:

Code:
using System;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Diagnostics;
using Kassasysteem.Controll;
using Kassasysteem.Entity;
using System.Threading;
using System.Threading.Tasks;


namespace Kassasysteem.Boundary
{
    class KassaGUI : System.Windows.Forms.Form
    {

        FormState formState = new FormState();
        public ListView productlijst;

        //Beginknoppen
        public Button koopknop, Abbokaartknop, reserveringsknop, wijzigingknop, systeemknop, cashbtn, pinbtn, terugbtn, verwijderknop, retourknop;

        //Systeemknoppen
        public Button gevondenknop, Herstartbtn, Sysconfigbtn, Afsluitbtn;
        public ListView gevondenlijst;

        //koopknoppen
        public Button koopbtn1, verderbtn;
        public Panel personenpanel;

        //Spec kaartenknoppen
        private Button abbobtn, tienritbtn, biosbonbtn; 

        //Reserveringsknoppen
        private TextBox reserveringsnrtxt;
        private Button nrbtn0, nrbtn1, nrbtn2, nrbtn3, nrbtn4, nrbtn5, nrbtn6, nrbtn7, nrbtn8, nrbtn9, okbtn;

        //gevonden voorwerpen
        private Button voegvoorwerptoeknop, verwijdervoorwerpknop, slaVoorwerpOp;
        private TextBox artikeltxt, codetxt;
        private Label artikel, code;
        Gevondenbeheer gevondenbeheer;

        //stoellenkeuzescherm
        private Panel stoelenkeuze = new Panel();

        private Label koptekst, totaalprijstxt, totaalprijs;

        //Instellingen
        //Kleur van de knoppen
        Color knopkleur = Color.LightGray;

        //Koptekst
        String hoofdtekst;

        //Verkoop initialiseren
        Verkoopbeheer verkoopbeheer;

        //Filmverkoop initialiseren
        Filmverkoopbeheer verkoop;

        //Filmbeheer initialiseren
        Filmbeheer filmbeheer;
        Panel filmkeuze;

        //Totaalprijs uitrekenen
        String prijs;

        //Fouten
        public Label fout;

*****
Knip anders wordt het beetje heel erg lang
*****


          //  int personen;
            public void tijden_Click(object sender, System.EventArgs e)
            {
                doe dit

            }
                TextBox volwasseninvoer;
                TextBox kindinvoer;
                TextBox ouderinvoer;
                public void aantalpersonen_Click(object sender, System.EventArgs e)
                {
                    doe dat
            }


            public void zalenbutton_Click(object sender, System.EventArgs e)
            {
               doe dit
                
            }
            //om ervoor te zorgen dat de zalen goed gevuld wordt en de fouten goed afgevangen worden is deze handeling gemaakt
                Panel zalenpanel;
                public void zalen()
                {
                    doe dat
                }
                Stoelenevents stoelevent;
                Label aantalpersonen;
                public void stoellenkleinezaal()
                {
                    doe dit

                }
                public void Stoel_Click(object sender, System.EventArgs e)
                {
                    doe dat
                }
                    public void bevestigings_Click(object sender, System.EventArgs e)
                    {
                        doe dit
                    }






           






        //Actie bij het klikken op het systeem
        public void Systeemknopklik(object sender, System.EventArgs e)
        {
           doe dit
        }
            //Actie bij het klikken op afsluiten
            public void gevondenknop_Click(object sender, System.EventArgs e)
        {
            doe dat

        }
                public void voegvoorwerptoe_Click(object sender, System.EventArgs e)
                {
                   doe dit
                }
                    public void slaVoorwerpOp_Click(object sender, System.EventArgs e)
                {
                        doe dat

                }
                public void verwijdervoorwerp_Click(object sender, System.EventArgs e)
                {
                    doe dit
                }
            public void AfsluitClick(object sender, System.EventArgs e)
        {
            doe dat
        }
            public void Herstartbtn_Click(object sender, System.EventArgs e)
            {
                doe dit
            }
            public void Sysconfigbtn_Click(object sender, EventArgs e)
            {
                doe dat
            }








        //Actie bij het klikken op Abbonementen
        public void Abbokaartklik(object sender, EventArgs e)
        {
            doe dit
        }
            //Actie's voor submenu Abbo's
            public void biosbonbtn_Click(object sender, EventArgs e)
        {
            doe dat
        }
            public void tienritbtn_Click(object sender, EventArgs e)
        {
           doe dit
        }
            public void abbobtn_Click(object sender, EventArgs e)
            {
                doe dat
            }
        





        
        
        
        //Actie bij het klikken op reserveringen
        public void reserveringsknop_Click(object sender, EventArgs e)
        {
            doe dit
        }
            //Reserveringsscherm
            public void nrbtn_Click(object sender, EventArgs e)
        {
            doe dat
        }
            public void okbtn_Click(object sender, EventArgs e)
            {
               doe dit
            }
            






        public void wijzigingklik(object sender, EventArgs e)
        {
           doe dat
        }


        public void terugbtn_Click(object sender, System.EventArgs e)
        {
            doe dit
        }

        public void betaal_Click(object sender, System.EventArgs e)
        {
            doe dat
        }




        //Methodes die benodigd zijn om de GUI draaiend te maken/houden
        public static void Main(String[] args)
        {
            doe dit
        }
        public int getBreedte()
        {
            doe dat
        }
        public int getHoogte()
        {
            doe dit
        }
      
        //Lijst vullen
        public void vulbox()
        {
            doe dtt
        }
        //opnieuw de totaalprijs uitrekenen
        public void berekeningTotaalprijs()
        {
            doe dat
        }

        //Gevonden voorwerpen lijst
        public void vulGevondenvoorwerpen()
        {
            doe dit
        }

        //Foutinformatie verwijderen
        public void Foutverwijderaar()
        {
            doe dat
        }

        public void controlsremove()
        {
           doe dit
        }
    }
}

En volgens mij moet het gewoon niet op deze manier, echter hebben alle controls die bij een click wordt uitgevoerd betrekking op de controls die in deze klasse zijn toegevoegd.

Dus: knop a heeft de actie waardoor knop a verdwijnt en knop b op het frame wordt gezet.

Dus gaarne hoor ik wat uitleg hoe dit moet
 
Kun je het duidelijker maken met screenshots van je form(s) waar je precies tegenaan loopt?

Gebruik waar mogelijk apparte classes om dingen te doen en gebruik het form voornamelijk voor dingen aan de gebruiker te laten zien en input te verkrijgen. Niet om al je logic in te stoppen.
 
euhm voor iets theoretisch een screenshot plaatsen?:P verder dan de code geven kan dus niet.
Mijn form gebruik ik ook alleen maar om dingen aan de gebruiker te laten zien, maar met al mijn knoppen wordt het niet echt overzichtelijk. De meeste handlers zijn handelingen waarbij iets van het form af wordt gehaald en nieuwe elementen worden toegevoegd.

Zoals ik al eerder zei:
knop a heeft de actie waardoor knop a verdwijnt en knop b op het frame wordt gezet, wanneer er op knop b wordt gedrukt verdwijnt knop b en wordt knop c op het frame gezet etc etc...

In mijn code zitten echter 100-en knoppen, dus dit zijn 1000en regels en wordt onoverzichtelijk.
 
Misschien wil je meer naar een MDI form (childforms in 1 parentform) of het gebruik van tabs.

MDI:
MDI%20Child%20menu.gif


Tabs:
UserControlInTabForm.jpg


User Controls:
Ook kun je de verschillende delen in user controls maken, een soort panel voor wat je op het scherm wilt. Dan hoef je niet alle controls te wisselen maar alleen het totale panel. Dan heb je dus ook gewoon alles wat bij elkaar hoort netjes in 1 file i.p.v. alle code bij elkaar
 
Ik heb 1 scherm(frame) wat simpel met touchscreen gebruikt moet kunnen worden dat zijn die 2 eerste voorbeelden van jou niet echt :P
Na verder zoeken kom ik op dit topic: klikkerdeklik

Dat is denk ik jou laatste opmerking, en komt het dichtste bij wat ik bedoelde. Ik gebruik wel panels, maar deze worden intern in dezelfde classe gemaakt. Het is de eerste keer dat ik zo'n gigantische GUI moest bouwen, dus drm liep ik vast:P
Ik ga morgen op vakantie, ik hoop voor die tijd even te testen of ik eruit kom, en eventueel geef ik hier nog een gil als het nodig is :)
 
Jap dat was 'm :) ik heb ff snel een testgevalletje gemaakt in Java :)

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class Hoofdscreen extends JFrame
{
	private static JFrame frame;
	private JPanel hoofdpanel;
	private JButton button;
	
	public Hoofdscreen()
	{
		setLayout(null);
		hoofdpanel = new JPanel();
		hoofdpanel.setBounds(0, 0, 275, 80);
		add(hoofdpanel);
		hoofdpanel.setLayout(null);
		
		button = new JButton("Klikkerdeklik");
		
		
		button.setBounds(10,10,150, 50);
		button.addActionListener(new knop_Click());
		
		hoofdpanel.add(button);
	}

	public static void main(String[] args)
	{
		frame = new Hoofdscreen();
		frame.setVisible(true);
		frame.setSize(400, 500);
		frame.setLayout(null);
	}
	
	class knop_Click implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent e) 
		{
			JPanel extra = new ExtraPanel();
			setContentPane(extra);
		}
		
	}
	
	
}

Code:
import java.awt.Color;
import javax.swing.*;


public class ExtraPanel extends JPanel
{
	private JLabel label;
	private JButton button;
	
	public ExtraPanel()
	{
		System.out.println("hoi");
		setBounds(90, 90, 275, 80);
		setLayout(null);
		setBackground(Color.black);
		
		label = new JLabel("Tekst");
		label.setBounds(10,10,150, 50);
		add(label);
		
		button = new JButton("Klikje");
		button.setBounds(1,1,150,50);
		add(button);
		
	}
}

@Bloodshed tnx voor de tik in de richting ;)
 
Om code overzichtelijk te houden stel ik voor dat je gebruik maakt van functies en die defineerd in klassen.
 
Spuit 11 -.-' 't hierboven gemaakte programmaatje was ook een snelle schets...en als je het gesprek ff doorlas had je al gezien dat iemand anders dit ook al had gezegd, waarop ik al had gereageerd...

Daarnaast stond de vraag al op opgelost...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan