Ergebnis 1 bis 5 von 5
  1. #1
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    Hilfe bei Java-Programmierung (Layout)

    Hallo,

    Ich muss gerade für meinen Programmierungskurs folgende Aufgabe programmieren:
    Schreiben Sie ein Programm, das folgende Eigenschaften hat:

    • Eingabe eines Systems linearer Ungleichungen in zwei Variablen. Tipp: Alle Ungleichungen können
    in der Form a x+b y≤c angegeben werden. Es muss also pro Ungleichung die Möglichkeit
    geben, die reellen Zahlen a , b und c einzugeben. Implementieren Sie eine
    benutzerfreundliche Eingabe.

    • Eine Graphik, die die zu den Ungleichungen gehörenden Geraden in einem Koordinatensystem
    darstellt.

    • Berechnung der Eckpunkte des durch das System von Ungleichungen definierten Polygons

    • Eingabe einer Zielfunktion f ( x ; y )=g x+h y , g und h sind dabei reelle Zahlen, die
    über ein GUI eingegeben werden müssen. Implementieren Sie sich eine benutzerfreundliche
    Eingabe.

    • Berechnung und Anzeige des maximalen Funktionswert der Zielfunktion unter den
    Einschränkungen, die durch das System von Ungleichungen festgelegt werden.

    • Implementieren Sie nur einen ActionListener und zwar als Singleton.
    Die Funktionen haben ich größtenteils schon fertig, das einzige bei dem es hapert sind die graphischen Oberflächen, da ich da (Hand aufs Herz) noch nie wirklich was mit zutun hatte (zu dem Zeitpunkt wo es in den Vorlesungen dran kam war ich natürlich krank)
    Ich hab keine Ahnung welches Layout ich dafür verwenden kann und wie ich es anwende (die Unterlagen von meinem Kurs sind da ziemlich ungenau)
    Ich hänge hier noch ein Bild an wie ich mir das Programm vorstelle.

    Hilfe bei Java-Programmierung (Layout)

    Angedacht ist es so:
    Beim Start des Programm öffnet sich ein Fenster, indem jeweils ein Button zur berechnung von Gleichung und Ungleichung sind. Mit einem Knopfdruck öffnet sich dann ein jeweiliges Fenster das so aufgebaut ist, wie in dem Bild, dass ich angehangen habe.

    Vielleicht kann mir jemand dabei helfen.

    Mit freundlichen Grüßen
    MasterSansai

  2. Anzeige

    Hilfe bei Java-Programmierung (Layout)

    Schau dir mal diesen Bereich an. Dort ist für jeden was dabei!
  3. #2
    medeman medeman ist offline
    Avatar von medeman

    AW: Hilfe bei Java-Programmierung (Layout)

    Was benutzt du für eine IDE (wenn überhaupt)? Einige haben einen GUI-Builder eingebaut (bei anderen gibt es welche als Plug-Ins), da kannst du dir die GUI zusammenklicken

  4. #3
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: Hilfe bei Java-Programmierung (Layout)

    Zitat medeman Beitrag anzeigen
    Was benutzt du für eine IDE (wenn überhaupt)? Einige haben einen GUI-Builder eingebaut (bei anderen gibt es welche als Plug-Ins), da kannst du dir die GUI zusammenklicken
    Eclipse IDE for Java Developers Neon.2 Release (4.6.2)

  5. #4
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: Hilfe bei Java-Programmierung (Layout)

    Okay ich habe gerade ein Problem: ich habe ein Fenster mit JFormDesigner gebaut, allerdings lässt sich das Fenster aufs brechen nicht öffnen.

    Startene Datei:

    Code:
    import P2_pruefung.Frame.LinearFrame;
    
    public class Start {
    
    	public static void main(String[] args){
    		LinearFrame mf = new LinearFrame();
    		mf.setVisible(true);
    	}
    }
    LinearFrame:

    Code:
    package P2_pruefung.Frame;
    
    import java.awt.*;
    
    import javax.swing.*;
    
    
      @suppressWarnings("serial")
    public class LinearFrame extends JPanel {
    
    	public  LinearFrame() {
    		panel1 = new JPanel();
    		panel2 = new JPanel();
    		label6 = new JLabel();
    		textField4 = new JTextField();
    		label7 = new JLabel();
    		textField5 = new JTextField();
    		label8 = new JLabel();
    		textField6 = new JTextField();
    		button1 = new JButton();
    		label9 = new JLabel();
    		textField7 = new JTextField();
    		label10 = new JLabel();
    		textField8 = new JTextField();
    		label11 = new JLabel();
    		label12 = new JLabel();
    		button2 = new JButton();
    		panel3 = new JPanel();
    		label13 = new JLabel();
    		label14 = new JLabel();
    		panel4 = new JPanel();
    
    		//======== panel1 ========
    		{
    
    //			// 
    //			panel1.setBorder(new javax.swing.border.CompoundBorder(
    //				new javax.swing.border.TitledBorder(new javax.swing.border.EmptyBorder(0, 0, 0, 0),
    //					"JFormDesigner Evaluation", javax.swing.border.TitledBorder.CENTER,
    //					javax.swing.border.TitledBorder.BOTTOM, new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
    //					java.awt.Color.red), panel1.getBorder())); panel1.addPropertyChangeListener(new java.beans.PropertyChangeListener(){public void propertyChange(java.beans.PropertyChangeEvent e){if("border".equals(e.getPropertyName()))throw new RuntimeException();}});
    //
    //			panel1.setLayout(new BorderLayout());
    
    			//======== Eingabe-Panel ========
    			{
    				panel2.setLayout(new GridBagLayout());
    				((GridBagLayout)panel2.getLayout()).columnWidths = new int[] {152, 35, 0, 35, 28, 35, 0, 0, 0};
    				((GridBagLayout)panel2.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0};
    				((GridBagLayout)panel2.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4};
    				((GridBagLayout)panel2.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 1.0E-4};
    
    				
    				label6.setText("Bitte geben sie die von ihnen gew\u00fcnschte Ungleichung ein: ");
    				panel2.add(label6, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    				panel2.add(textField4, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    
    				
    				label7.setText("x + ");
    				panel2.add(label7, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    				panel2.add(textField5, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    
    				
    				label8.setText("y \u2264 ");
    				panel2.add(label8, new GridBagConstraints(4, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    				panel2.add(textField6, new GridBagConstraints(5, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    
    				//---- Hinzufügen Butten ----
    				button1.setText("Hinzuf\u00fcgen");
    				panel2.add(button1, new GridBagConstraints(7, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 0), 0, 0));
    
    				
    				label9.setText("Bitte geben sie eine Zielfunktion ein:");
    				panel2.add(label9, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    
    				//---- Eingabe von x der Zielfunktion ----
    				textField7.setText("1");
    				panel2.add(textField7, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 5), 0, 0));
    
    				
    				label10.setText("x + ");
    				panel2.add(label10, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 5), 0, 0));
    
    				//---- Eingabe von y der Zielfunktion ----
    				textField8.setText("1");
    				panel2.add(textField8, new GridBagConstraints(3, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 5), 0, 0));
    
    				
    				label11.setText("y =");
    				panel2.add(label11, new GridBagConstraints(4, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 5), 0, 0));
    
    				
    				label12.setText("f(x ; y)");
    				panel2.add(label12, new GridBagConstraints(5, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 5), 0, 0));
    
    				//---- Aktualisieren Button ----
    				button2.setText("Aktualisieren");
    				panel2.add(button2, new GridBagConstraints(7, 3, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 0, 0), 0, 0));
    			}
    			panel1.add(panel2, BorderLayout.NORTH);
    
    			//======== Schnittpunkte des Lösungspolynoms ========
    			{
    				panel3.setLayout(new GridBagLayout());
    				((GridBagLayout)panel3.getLayout()).columnWidths = new int[] {136, 0, 0};
    				((GridBagLayout)panel3.getLayout()).rowHeights = new int[] {0, 0, 0, 0};
    				((GridBagLayout)panel3.getLayout()).columnWeights = new double[] {0.0, 0.0, 1.0E-4};
    				((GridBagLayout)panel3.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 1.0E-4};
    
    				
    				label13.setText("Schnittpunkte des Polynoms:");
    				panel3.add(label13, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    				panel3.add(label14, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
    					GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    					new Insets(0, 0, 5, 5), 0, 0));
    			}
    			panel1.add(panel3, BorderLayout.WEST);
    
    			//======== Grafik ========
    			{
    				panel4.setLayout(null);
    
    				{ 
    					Dimension preferredSize = new Dimension();
    					for(int i = 0; i < panel4.getComponentCount(); i++) {
    						Rectangle bounds = panel4.getComponent(i).getBounds();
    						preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
    						preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
    					}
    					Insets insets = panel4.getInsets();
    					preferredSize.width += insets.right;
    					preferredSize.height += insets.bottom;
    					panel4.setMinimumSize(preferredSize);
    					panel4.setPreferredSize(preferredSize);
    				}
    			}
    			panel1.add(panel4, BorderLayout.CENTER);
    		}
    	}
    
    	private JPanel panel1;
    	private JPanel panel2;
    	private JLabel label6;
    	private JTextField textField4;
    	private JLabel label7;
    	private JTextField textField5;
    	private JLabel label8;
    	private JTextField textField6;
    	private JButton button1;
    	private JLabel label9;
    	private JTextField textField7;
    	private JLabel label10;
    	private JTextField textField8;
    	private JLabel label11;
    	private JLabel label12;
    	private JButton button2;
    	private JPanel panel3;
    	private JLabel label13;
    	private JLabel label14;
    	private JPanel panel4;
    }

  6. #5
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: Hilfe bei Java-Programmierung (Layout)

    okay sorry für den Dreifach post, aber ich habe gerade ein anderes Problem. Ich mach es nun doch selbst ohne Plugin. Allerdings habe ich gerade ein Problem mit den Buttons. Wie ich schon geschrieben habe, muss ActionListener als Singleton programmiert werden. allerdings weiß ich gerade nicht, wie ich den Inhalt eines Textfields übergeben kann.
    Ich brauche da wirklich dringend Hilfe.

    Code:

    Code:
    package P2_pruefung.Frame;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    
    import P2_pruefung.Frame.Funktionen.MyActionListener;
    
     @suppressWarnings("serial")
    public class LinearFrame extends JFrame{
    
    	LayoutManager design1 = new BorderLayout();
    	LayoutManager design2 = new GridBagLayout();
    	GridBagConstraints rules  = new GridBagConstraints(); 
    
    	public LinearFrame(){
    		// Voreinstellung des Fensters
    		super("Lineare Optimierung");
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setSize(1024,760);
    		this.setLocation(400,250);
    
    		JPanel oben = EingabePanel();
    		this.add(oben, BorderLayout.NORTH);
    
    	}
    
    	public JPanel EingabePanel(){
    		//Voreinstellungen für das Panel
    		JPanel panel = new JPanel();
    		panel.setLayout(design2);
    		rules.insets = new Insets(5,5,5,5);
    		rules.fill = GridBagConstraints.HORIZONTAL;
    
    
    		//Inhalt des Panels
    
    		// 1.Label 
    		JLabel label1 = new JLabel("Bitte geben sie füre eine Ungleichung \"ax + bx <= c\" jeweils a, b und c ein");
    		rules.gridx = 1;
    		rules.gridy = 1;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(label1, rules);
    
    		// Eingabe
    
    
    		JLabel label2 = new JLabel("a = ");
    		rules.gridx = 2;
    		rules.gridy = 2;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(label2, rules);
    
    
    
    		JLabel label3 = new JLabel(" b = ");
    		rules.gridx = 3;
    		rules.gridy = 2;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(label3, rules);
    
    		JLabel label4 = new JLabel(" c = ");
    		rules.gridx = 4;
    		rules.gridy = 2;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(label4, rules);
    
    		JTextField tf_a = new JTextField();
    		rules.gridx = 2;
    		rules.gridy = 3;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(tf_a, rules);
    
    		JTextField tf_b = new JTextField();
    		rules.gridx = 3;
    		rules.gridy = 3;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(tf_b, rules);
    
    		JTextField tf_c = new JTextField();
    		rules.gridx = 4;
    		rules.gridy = 3;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(tf_c, rules);
    
    		JButton hinzu = new JButton("hinzufügen");
    		rules.gridx = 4;
    		rules.gridy = 4;
    		rules.weightx = 1;
    		rules.weighty = 1;
    		panel.add(hinzu, rules);
    		hinzu.addActionListener(MyActionListener.getInstance());
    		//hinzu.addActionListener(MyActionListener.getInstance());
    
    		System.out.println("ausgegeben!");
    		return panel;
    	}
    }
    
    
    class MyActionListener implements ActionListener{
    
    	private static MyActionListener instance = null;
    
    
    	private MyActionListener(){
    
    	}
    
    	public static MyActionListener getInstance(){
    		if(instance == null)
    			instance = new MyActionListener();
    		return instance;
    	}
    
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		String action = e.getActionCommand().trim();
    		if(action.equals("hinzufügen")){
    			//todo
    		}
    	}
    
    }