GUI erstellen und verändern

  • Themenstarter Themenstarter Chickse
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

Chickse

Gast
hallo,

ich muß einen gehaltsrechner für eine projektarbeit erstellen und würde dies gerne mit jpanel machen. kann mir jemand sagen, wie ich die größe der eine flächen verändern kann, oder das ganze gerüst zu verziehen? komme damit irgendwie nicht weiter. gib es vielleicht irgendwo eine anleitung, wie man damit umgeht? danke für eure hilfe

gruß
 
Was meinst du mit "Größe der Fläche verändern ohne das Gerüst zu verziehen"?

Was für Layout-Manager verwendest du bisher?
 
Hi,
nimm ein GridBagLayout und leg darauf deine JPanels. da kannst du dann die größe der JPanels setzen.
 
@ mic_checker: ich verwende netbeans 3.6.

@T1M: woher bekomme ich das?
 
wie, woher bekomm ich das???
einfach hinschreiben ...
hab dir mal n anfang gemacht:
Code:
//GridBagLayout aufs Fenster legen
		Container contentPane=getContentPane();
		GridBagLayout gbl=new GridBagLayout();
		contentPane.setLayout(gbl);
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.HORIZONTAL;
		gbc.weightx=100;
		gbc.weighty=100;
da schauen

T1M
 
vielen dank T1M, aber ich dachte ich kann die felder einfach schnell rüberziehen, richtig anordnen und das ding läuft, dies scheint aber leider nicht der fall zu sein, zumindest bei mir nicht, was aber vermutlich eher an mir liegt. hoffe mal, ich bekomme es noch hin, habe ja bis fr. zeit 🙂 danke, falls du weiter tipps hast, immer her damit.

gruß
 
Wenn du NetBeans benutzt hast du doch ein leistungsstarkes Tool zum Herstellen von GUIs. Auch das Zusammensetzen von Oberflächen mit GridbagLayout ist dort sehr gut gelöst, wie ich meine.
 
np.
auf der page is des eigentlich ganz gut beschrieben. damit sollte man zurande kommen.
falls doch noch fragen auftauchen ... einfach fragen.
 
Chickse hat gesagt.:
vielen dank T1M, aber ich dachte ich kann die felder einfach schnell rüberziehen, richtig anordnen und das ding läuft, dies scheint aber leider nicht der fall zu sein, zumindest bei mir nicht, was aber vermutlich eher an mir liegt. hoffe mal, ich bekomme es noch hin, habe ja bis fr. zeit 🙂 danke, falls du weiter tipps hast, immer her damit.

gruß

Dann poste doch deinen bisherigen ansatz.....oder lern direkt wie man richtig mit Layout - Managern umgeht 😉
 
also ich habe es jetzt geschafft die gui zu erstellen, habe ein textfield in das der user sein gehalt eintippt. habe noch andere felder, wie radiobutton und das häckchen zeug und ein ausgabe feld, wo der nettolohn stehen soll. kann mir jemand helfen, wie ich das textfield auslesen kann, damit ich damit rechnen kann?

danke
 
hallo, ich habe jetzt das problem, dass er meine combo box nicht ausliest. er übernimmt einfach den wert nicht und springt gleich in den else zweig bei meinem berechnen button.
look:
// jComboBox1
//
jComboBox1.addItem("Steuerklasse 1");
jComboBox1.addItem("Steuerklasse 2");
jComboBox1.addItem("Steuerklasse 3");
jComboBox1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
jComboBox1_actionPerformed(e);
/*String combo1 = String.valueOf(jComboBox1.getSelectedItem());
if (combo1=="Steuerklasse 1")
{double steuer = 0.4;}
if (combo1=="Steuerklasse 2")
{double steuer = 0.3;}
if (combo1=="Steuerklasse 3")
{double steuer = 0.2;}*/
}

});


//
// jButton1
//
jButton1.setText("Berechnen");
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
jButton1_actionPerformed(e);
double argument = Double.parseDouble( jTextField1.getText());
String combo1 = String.valueOf(jComboBox1.getSelectedItem());
if (combo1=="Steuerklasse 1")
{double steuer = 0.4;}
if (combo1=="Steuerklasse 2")
{double steuer = 0.3;}
if (combo1=="Steuerklasse 3")
{double steuer = 0.2;}
else
steuer = 0.1;
if (jRadioButton1.isSelected())
{double kirche = argument*0.01;}
if (jCheckBox3.isSelected())
{double kranken = Double.parseDouble( jTextField3.getText());}
double ergebnis = argument-(argument*steuer);//(argument - (argument*steuer)-(argument*kranken) - kirche);
jTextField4.setText(Double.toString(ergebnis));
 
zum vorherigen post: Schau dich mal nach ActionListenern etc. um....

benutz doch bitte code-tags.

was genau ist dein problem?
 
mein problem ist. dass wenn ich das gehalt eingebe und dann den button "berechnen" drücke, gibt er genau den betrag aus, der oben eingegeben wurde, ohne die berechnung durchzuführen, komme da einfach nicht weiter. wenn du dir mal die vorletzte code zeile anschaut, dort wo ich das ergebnis berechnen will, wenn ich dort statt steuer z.b. mal zwei eingebe, berechnet er es mir, füge ich dann die variable steuer wieder an, dann nicht. kannst du mir helfen, kann dir auch mal alles schicken alles email. danke

gruß
 
Strings vergleicht man nicht mit ==, sondern mit .equals(String) ...

Tu dir mal ein ordentliches Buch an. Wenn man so ganz ohne Basics einfach draufrumhackt, kommt nur unnötig Frust auf...
 
danke für den tipp, glaube das werde ich auch mal machen. habe dein tipp mit den equals ausprobiert und alles == ersetzt, nur rechnet er leider immernoch nicht damit. nochmals danke

gruß
 
also hier ist er, hoffe du kannst helfen. danke

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 * Summary description for gehalt
 *
 */
public class gehalt extends JFrame
{
	// Variables declaration
	private JCheckBox jCheckBox1;
	private JCheckBox jCheckBox2;
	private JCheckBox jCheckBox3;
	private JRadioButton jRadioButton1;
	
	private JTextField jTextField1;
	private JTextField jTextField2;
	private JTextField jTextField3;
        private JTextField jTextField4;
	private JComboBox jComboBox1;
	private JComboBox jComboBox2;
	private JPanel contentPane;
        private JButton jButton1;
        private JLabel jLabel1;
	private JLabel jLabel2;
	private JLabel jLabel3;
	private JLabel jLabel4;
        
        double argument;
        double steuer;
        String combo1;
        double kranken;
        double ergebnis;
        double arbeit;
        double rente;
        double kirche;
	// End of variables declaration


	public gehalt()
	{
		super();
		initializeComponent();
		//
		// TODO: Add any constructor code after initializeComponent call
		//

		this.setVisible(true);
	}

	
	private void initializeComponent()
	{
		jCheckBox1 = new JCheckBox();
		jCheckBox2 = new JCheckBox();
		jCheckBox3 = new JCheckBox();
		jRadioButton1 = new JRadioButton();
	
		jTextField1 = new JTextField();
		jTextField2 = new JTextField();
		jTextField3 = new JTextField();
                jTextField4 = new JTextField();
		jComboBox1 = new JComboBox();
		jComboBox2 = new JComboBox();
                jButton1 = new JButton();
                jLabel1 = new JLabel();
		jLabel2 = new JLabel();
		jLabel3 = new JLabel();
		jLabel4 = new JLabel();
		contentPane = (JPanel)this.getContentPane();

		//
		// jCheckBox1
		//
		jCheckBox1.setText("Rentenversicherungspflicht");
		jCheckBox1.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e)
			{
				jCheckBox1_itemStateChanged(e);
                                if (jCheckBox1.isSelected())
                                {double rente = argument*0.01;}
			}

		});
		//
		// jCheckBox2
		//
		jCheckBox2.setText("Arbeitslosenversicherung");
		jCheckBox2.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e)
			{
				jCheckBox2_itemStateChanged(e);
                                if (jCheckBox2.isSelected())
                                {double arbeit = argument*0.02;}
			}

		});
		//
		// jCheckBox3
		//
		jCheckBox3.setText("Krankenkasse");
		jCheckBox3.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e)
			{
				jCheckBox3_itemStateChanged(e);
                                /*if (jCheckBox3.isSelected())
                                {double kranken = Double.parseDouble( jTextField3.getText());}*/
			}

		});
		//
		// jRadioButton1
		//
		jRadioButton1.setText("Kirchensteuer");
		jRadioButton1.setSelected(true);
		jRadioButton1.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e)
			{
				jRadioButton1_itemStateChanged(e);
                                /*if (jRadioButton1.isSelected())
                                {double kirche = argument*0.01;}*/
			}

		});
		
		//
		// jTextField1
		//
		jTextField1.setText("");
                
		jTextField1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
                        {
                            jTextField1_actionPerformed(e);
                            //double argument = Double.parseDouble( jTextField1.getText());
			}
                            
		});
		//
		// jTextField2
		//
		jTextField2.setText("");
		jTextField2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField2_actionPerformed(e);
			}

		});
		//
		// jTextField3
		//
		jTextField3.setText("");
		jTextField3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField3_actionPerformed(e);
			}

		});
                
		//
		// jTextField4
		//
		jTextField4.setText("jTextField4");
		jTextField4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField4_actionPerformed(e);
			}

		});
		//
		// jComboBox1
		//
		jComboBox1.addItem("Steuerklasse 1");
		jComboBox1.addItem("Steuerklasse 2");
		jComboBox1.addItem("Steuerklasse 3");
		jComboBox1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{	
                           jComboBox1_actionPerformed(e);
                          /* String combo1 = String.valueOf(jComboBox1.getSelectedItem());
                           if (combo1.equals("Steuerklasse 1"))
                           {double steuer = 0.4;}
                           if (combo1.compareTo("Steuerklasse 2")==0)
                           {double steuer = 0.3;}
                           if (combo1=="Steuerklasse 3")
                           {double steuer = 0.2;}
                           else
                               steuer = 0.1;*/
			}

		});
		//
		// jComboBox2
		//
		jComboBox2.addItem("0");
		jComboBox2.addItem("1");
		jComboBox2.addItem("2");
		jComboBox2.addItem("3");
		jComboBox2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jComboBox2_actionPerformed(e);
			}

		});
                
                //
		// jButton1
		//
		jButton1.setText("Berechnen");
		jButton1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jButton1_actionPerformed(e);
                                double argument = Double.parseDouble( jTextField1.getText());
                                String combo1 = String.valueOf(jComboBox1.getSelectedItem());
                           if (combo1.compareTo("Steuerklasse 1")==0)
                           {double steuer = 4;}
                           if (combo1.equals("Steuerklasse 2"))
                           {double steuer = 0.3;}
                           if (combo1.equals("Steuerklasse 3"))
                           {double steuer = 0.2;}
                           else
                               steuer = 0.1;
                                if (jRadioButton1.isSelected())
                                {double kirche = argument*0.01;}
                                if (jCheckBox3.isSelected())
                                {double kranken = Double.parseDouble( jTextField3.getText());}
                                double ergebnis = argument-(argument*(steuer/100));//(argument - (argument*steuer)-(argument*kranken) - kirche);
                                jTextField4.setText(Double.toString(ergebnis));
			}

		});
                //
		// jLabel1
		//
		jLabel1.setText("Bruttolohn");
		//
		// jLabel2
		//
		jLabel2.setText("Steuerklasse");
		//
		// jLabel3
		//
		jLabel3.setText("Zahl Kinderfreibeträge");
		//
		// jLabel4
		//
		jLabel4.setText("Freibetrag");
		//
		// contentPane
		//
		
                contentPane.setLayout(null);
		addComponent(contentPane, jCheckBox1, 245,9,160,24);
		addComponent(contentPane, jCheckBox2, 245,44,161,24);
		addComponent(contentPane, jCheckBox3, 245,79,96,24);
		addComponent(contentPane, jRadioButton1, 245,148,139,24);
		
		addComponent(contentPane, jTextField1, 120,10,100,22);
		addComponent(contentPane, jTextField2, 120,116,100,22);
		addComponent(contentPane, jTextField3, 245,115,77,22);
                addComponent(contentPane, jTextField4, 245, 215, 80, 22);
		addComponent(contentPane, jComboBox1, 120,46,100,22);
		addComponent(contentPane, jComboBox2, 120,80,54,22);
		addComponent(contentPane, jButton1, 120,212,94,28);
                addComponent(contentPane, jLabel1, 10,9,60,18);
		addComponent(contentPane, jLabel2, 10,44,77,18);
		addComponent(contentPane, jLabel3, 10,79,114,18);
		addComponent(contentPane, jLabel4, 10,116,60,18);
                //
		// gehalt
		//
		this.setTitle("gehalt - extends JFrame");
		this.setLocation(new Point(0, 0));
		this.setSize(new Dimension(472, 300));
	}

	/** Add Component Without a Layout Manager (Absolute Positioning) */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
	{
		c.setBounds(x,y,width,height);
		container.add(c);
	}

	//
	// TODO: Add any appropriate code in the following Event Handling Methods
	//
	private void jCheckBox1_itemStateChanged(ItemEvent e)
	{
		System.out.println("\njCheckBox1_itemStateChanged(ItemEvent e) called.");
		System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected"));
		// TODO: Add any handling code here
		
	}

	private void jCheckBox2_itemStateChanged(ItemEvent e)
	{
		System.out.println("\njCheckBox2_itemStateChanged(ItemEvent e) called.");
		System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected"));
		// TODO: Add any handling code here
		
	}

	private void jCheckBox3_itemStateChanged(ItemEvent e)
	{
		System.out.println("\njCheckBox3_itemStateChanged(ItemEvent e) called.");
		System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected"));
		// TODO: Add any handling code here
		
	}

	private void jRadioButton1_itemStateChanged(ItemEvent e)
	{
		System.out.println("\njRadioButton1_itemStateChanged(ItemEvent e) called.");
		System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected"));
		// TODO: Add any handling code here
		
	}

	
        private void jTextField1_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField1_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

	private void jTextField2_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField2_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

	private void jTextField3_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField3_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

        private void jTextField4_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField4_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

        
	private void jComboBox1_actionPerformed(ActionEvent e)
	{
		System.out.println("\njComboBox1_actionPerformed(ActionEvent e) called.");
		
		Object o = jComboBox1.getSelectedItem();
		System.out.println(">>" + ((o==null)? "null" : o.toString()) + " is selected.");
		// TODO: Add any handling code here for the particular object being selected
		
	}

	private void jComboBox2_actionPerformed(ActionEvent e)
	{
		System.out.println("\njComboBox2_actionPerformed(ActionEvent e) called.");
		
		Object o = jComboBox2.getSelectedItem();
		System.out.println(">>" + ((o==null)? "null" : o.toString()) + " is selected.");
		// TODO: Add any handling code here for the particular object being selected
		
	}

        private void jButton1_actionPerformed(ActionEvent e)
	{
		System.out.println("\njButton1_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here
[/code]
 
Klassennamen schreibt man groß !

Vielleicht könntest du deinen Code auch noch schöner einrücken etc. ? Bestehen denn irgendwelche Probleme ? Falls ja: Genau angeben was nicht geht.

Muss leider gleich auf die Arbeit, bis heute Abend....
 
mein problem beginnt, so denke ich ab zeile 212 und geht bis 235. es wird einfach die berechnung nicht durchgeführt, zumindest nicht richtig, da er sofort in den else zweig sprinnt. habe es jetzt schon mit equals und compareTo versucht, aber es geht nicht. wäre echt klasse von dir, wenn du mir helfen könnst. vielen dank

gruß
 
Sofort ist das falsche Wort, zuerst wird durchaus eines der if's ausgeführt, erst danach geht es ins else.

Dein Code sieht so aus:
Code:
                        if (combo1.compareTo("Steuerklasse 1")==0)
                           {double steuer = 4;}
                           if (combo1.equals("Steuerklasse 2"))
                           {double steuer = 0.3;}
                           if (combo1.equals("Steuerklasse 3"))
                           {double steuer = 0.2;}
                           else
                               steuer = 0.1;
                                if (jRadioButton1.isSelected())
                                {double kirche = argument*0.01;}
                                if (jCheckBox3.isSelected())
                                {double kranken = Double.parseDouble( jTextField3.getText());}
                                double ergebnis = argument-(argument*(steuer/100));//(argument - (argument*steuer)-(argument*kranken) - kirche);
                                jTextField4.setText(Double.toString(ergebnis));


Ich habe mir erlaubt, einen Formatter drüberzujagen, und bekomme das hier:
Code:
               jButton1_actionPerformed(e);
                double argument = Double.parseDouble(jTextField1.getText());
                String combo1 = String.valueOf(jComboBox1.getSelectedItem());
                if (combo1.compareTo("Steuerklasse 1") == 0) {
                    double steuer = 4;
                }
                if (combo1.equals("Steuerklasse 2")) {
                    double steuer = 0.3;
                }
                if (combo1.equals("Steuerklasse 3")) {
                    double steuer = 0.2;
                } else
                    steuer = 0.1;
                if (jRadioButton1.isSelected()) {
                    double kirche = argument * 0.01;
                }
                if (jCheckBox3.isSelected()) {
                    double kranken = Double.parseDouble(jTextField3.getText());
                }
                double ergebnis = argument - (argument * (steuer / 100));// (argument
                // -
                // (argument*steuer)-(argument*kranken)
                // -
                // kirche);
                jTextField4.setText(Double.toString(ergebnis));


Jetzt guck dir das else genau an, es wird aufgerufen, sollte "combo1.equals("Steuerklasse 3")" false sein.

Ein paar zusätzliche elses, und ein paar Klammern könnten helfen:
Code:
               if (combo1.compareTo("Steuerklasse 1") == 0) {
                    double steuer = 4;
                }
                else if (combo1.equals("Steuerklasse 2")) {
                    double steuer = 0.3;
                }
                else if (combo1.equals("Steuerklasse 3")) {
                    double steuer = 0.2;
                } 
                else{
                    steuer = 0.1;
                }

Ich hoffe, jetzt wird dir auch klar, für was korrektes Einrücken gut ist :wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben