Java 3D Grafikprogrammierung mit Eclipse
-
Das Problem bei einem zweiten neuen Frame ist es, das es nicht aus einem Fenster besteht wo oben die 3D Anwendung und unten die Buttonleiste angezeigt wird. Das sind doch 2 verschiedene Fenster die aufgehen. Ich möchte den zweiten aber unterhalb der ersten Frame einfügen. Wie kann ich das realisieren?
-
Versuchs mal mit einem JDialog statt einem JFrame
MfG SideWinder
-
Hallo
ich habe selber noch nie was mit Java 3D gemacht...
Ich weiß nicht ob das geht aber man könnte wenn das 3D Fenster Ein JComponent ist ein JSplitPane verwenden. Oder man könnte auch JInternalFrame benutzen.
Ich weiß aber nicht ob das geht mit dem 3D Fenster
-
Hallo,
dass mit dem JInternalFrame hat funktioniert. Danke @JaverCoder für deine Hilfe.
Jetzt habe ich eine Borderlayout erstellt, wo oben die Anlagensimulation und unten die Buttonleiste stehen. Das Problem ist, dass ich in der Schule mit JBuilder gearbeitet hatte (vor 3 Jahren) und jetzt in Eclipse ohne den Grafikeditor Probleme habe die ActionPerformed Eigenschaften der Buttons so einzufügen dass sie auch Funktionieren. Ich möchte zuerstmal, wenn ich auf einen Button draufklicke, dass sich die Eigenschaften der benachbarten Buttons sich ändern. z.B. setEnabled auf true bzw. false. hier mein Code.
public static void main(String[] args) { // erzeugt Applikationsfenster der Groesse 800x600 //new MainFrame(new AnlageSim2(args), 800, 600); Panel pPanel = new Panel(); GridLayout layoutUnten=new GridLayout(3,6); pPanel.setLayout(layoutUnten); JInternalFrame iFrame = new JInternalFrame("Anlage"); iFrame.add(new AnlageSim2(args)); iFrame.setSize(1024, 600); iFrame.setMaximizable(true); iFrame.setVisible(true); JButton rb1Button; JButton rb2Button; JButton rb3Button; JButton rb4Button; JButton rb5Button; JButton rb6Button; JButton rb7Button; JButton rb8Button; JButton rb9Button; JButton rb10Button; JButton rb11Button; JButton rb12Button; JButton rb13Button; JButton rb14Button; JButton leer1Button; JButton leer2Button; JButton leer3Button; JButton leer4Button; // Buttons erzeugen und Event-Handler setzen: rb1Button = new JButton("RB 1"); rb2Button = new JButton("RB 2"); rb3Button = new JButton("RB 3"); rb4Button = new JButton("RB 4"); rb5Button = new JButton("RB 5"); rb6Button = new JButton("RB 6"); rb7Button = new JButton("RB 7"); rb8Button = new JButton("RB 8"); rb9Button = new JButton("RB 9"); rb10Button = new JButton("RB 10"); rb11Button = new JButton("RB 11"); rb12Button = new JButton("RB 12"); rb13Button = new JButton("RB 13"); rb14Button = new JButton("RB 14"); rb1Button.setEnabled(false); rb2Button.setEnabled(true); rb3Button.setEnabled(false); rb4Button.setEnabled(false); rb5Button.setEnabled(false); rb6Button.setEnabled(false); rb7Button.setEnabled(false); rb8Button.setEnabled(false); rb9Button.setEnabled(false); rb10Button.setEnabled(false); rb11Button.setEnabled(false); rb12Button.setEnabled(false); rb13Button.setEnabled(false); rb14Button.setEnabled(false); rb1Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); /*rb2Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } });*/ rb3Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb4Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb5Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb6Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb7Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb8Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb9Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb10Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb11Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb12Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb13Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); rb14Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); leer1Button = new JButton(""); leer2Button = new JButton(""); leer3Button = new JButton(""); leer4Button = new JButton(""); leer1Button.setEnabled(false); leer2Button.setEnabled(false); leer3Button.setEnabled(false); leer4Button.setEnabled(false); JFrame frame = new JFrame("Simulation"); frame.setLayout(new BorderLayout()); pPanel.add(leer1Button); pPanel.add(rb11Button); pPanel.add(rb12Button); pPanel.add(rb13Button); pPanel.add(rb14Button); pPanel.add(leer2Button); pPanel.add(leer3Button); pPanel.add(rb7Button); pPanel.add(rb8Button); pPanel.add(rb9Button); pPanel.add(rb10Button); pPanel.add(leer4Button); pPanel.add(rb1Button); pPanel.add(rb2Button); pPanel.add(rb3Button); pPanel.add(rb4Button); pPanel.add(rb5Button); pPanel.add(rb6Button); frame.setSize(1024, 700); frame.setVisible(true); frame.add(pPanel,BorderLayout.SOUTH); frame.add(iFrame,BorderLayout.PAGE_START); }// Ende Methode main public void actionPerformed(ActionEvent event) { String cmd = event.getActionCommand(); if (cmd.equals("Rb2Button")) { this.setEnabled(false); } } // Ende Klasse AnlageSim }
-
Du könntest deinem Main Dings sagen dass es ActionListener implementiert.
Dann musst Du nich jedem Button einzeln immer wieder einen ganzen Listener anfügen.
Und Du kannst die Auswertung an einem Ort im Code vornehmen.
Wenn Du die Buttons ändern willst (Enabled und Nme etc) dann sollten sie Klassen Member sein. Wenn Du den Listener implementierst schreibt er dir eine Funktion die, die Buttons nicht sonst nicht kennt.Ganz grob vielleicht so:
public class Main extends JFrame implements ActionListener { private JButton jb1 = new JButton("Button 1"); public Main() { JPanel jp = new JPanel(); jb1.addActionListener(this); jb1.setActionCommand("JB1"); jp.add(jb1); this.add(jp); ... public void actionPerformed(ActionEvent e) { String action = e.getIrgendwas(); if(action.equals("JB1") { jb1.setEnabled(false); } }
Achja, vielleicht weisst Du das schon, aber sicher ist sicher... wenn Du das setLayout(null) machst, hast Du kein normales Layout mehr, sondern kannst die Buttons etc. pixelgenau platzieren.
-
ich kommen einfach nicht weiter. Das kann doch nicht so schwer sein einen Button zu deaktivieren, wenn man draufklickt. Kann mir jemand sagen was ich falsch mache. Beim Debuggen Springt er in den ActionListener rein aber setzt die Buttons nicht auf disable.
ICh habe eine Classe Buttons definiert und eine Klasse AnlageSim.
hier mein code vom Button Class:
package anlage; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; public class Buttons extends Frame{ //****************************************BUTTON********* public JButton rb1Button = new JButton("RB 1"); public JButton rb2Button = new JButton("RB 2"); public JButton rb3Button = new JButton("RB 3"); public JButton rb4Button = new JButton("RB 4"); public JButton rb5Button = new JButton("RB 5"); public JButton rb6Button = new JButton("RB 6"); public JButton rb7Button = new JButton("RB 7"); public JButton rb8Button = new JButton("RB 8"); public JButton rb9Button = new JButton("RB 9"); public JButton rb10Button = new JButton("RB 10"); public JButton rb11Button = new JButton("RB 11"); public JButton rb12Button = new JButton("RB 12"); public JButton rb13Button = new JButton("RB 13"); public JButton rb14Button = new JButton("RB 14"); public JButton leer1Button = new JButton(""); public JButton leer2Button = new JButton(""); public JButton leer3Button = new JButton(""); public JButton leer4Button = new JButton(""); public Buttons(){} }
und hier vom Main, welche sich in der AnlageSim Klasse befindet:
public static void main(String[] args){ // erzeugt Applikationsfenster der Groesse 800x600 //new MainFrame(new AnlageSim2(args), 800, 600); Buttons Buttonlist = new Buttons(); //***************************************FRAME***************** JFrame frame = new JFrame("Simulation"); JInternalFrame iFrame = new JInternalFrame("Anlage"); //**************************************PANEL******************** Panel pPanel = new Panel(); //**************************************LAYOUT******************* GridLayout layoutUnten=new GridLayout(3,6); frame.setLayout(new BorderLayout()); pPanel.setLayout(layoutUnten); iFrame.add(new AnlageSim(args)); iFrame.setSize(1024, 650); iFrame.setMaximizable(true); iFrame.setVisible(true); Buttonlist.rb1Button.setEnabled(false); Buttonlist.rb2Button.setEnabled(true); Buttonlist.rb3Button.setEnabled(false); Buttonlist.rb4Button.setEnabled(false); Buttonlist.rb5Button.setEnabled(false); Buttonlist.rb6Button.setEnabled(false); Buttonlist.rb7Button.setEnabled(false); Buttonlist.rb8Button.setEnabled(false); Buttonlist.rb9Button.setEnabled(false); Buttonlist.rb10Button.setEnabled(false); Buttonlist.rb11Button.setEnabled(false); Buttonlist.rb12Button.setEnabled(false); Buttonlist.rb13Button.setEnabled(false); Buttonlist.rb14Button.setEnabled(false); Buttonlist.leer1Button.setEnabled(false); Buttonlist.leer2Button.setEnabled(false); Buttonlist.leer3Button.setEnabled(false); Buttonlist.leer4Button.setEnabled(false); pPanel.add(Buttonlist.leer1Button); pPanel.add(Buttonlist.rb11Button); pPanel.add(Buttonlist.rb12Button); pPanel.add(Buttonlist.rb13Button); pPanel.add(Buttonlist.rb14Button); pPanel.add(Buttonlist.leer2Button); pPanel.add(Buttonlist.leer3Button); pPanel.add(Buttonlist.rb7Button); pPanel.add(Buttonlist.rb8Button); pPanel.add(Buttonlist.rb9Button); pPanel.add(Buttonlist.rb10Button); pPanel.add(Buttonlist.leer4Button); pPanel.add(Buttonlist.rb1Button); pPanel.add(Buttonlist.rb2Button); pPanel.add(Buttonlist.rb3Button); pPanel.add(Buttonlist.rb4Button); pPanel.add(Buttonlist.rb5Button); pPanel.add(Buttonlist.rb6Button); frame.setSize(1024, 768); frame.setVisible(true); frame.add(pPanel,BorderLayout.SOUTH); frame.add(iFrame,BorderLayout.PAGE_START); Buttonlist.rb2Button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {Buttons Buttonlist = new Buttons(); Buttonlist.rb3Button.setEnabled(false); Buttonlist.rb4Button.setEnabled(true); } });
-
BTW: Hol dir VE von eclipse.org, dann hast du einen grafischen Editor.
MfG SideWinder
-
hey SideWinder genau sowas habe ich auch gesucht. Vielen Vielen Dank.
ICh habe diese Version runtergeladen:http://www.eclipse.org/downloads/download.php?file=/tools/ve/downloads/drops/S-1.2M3-200604071123/VE-runtime-1.2M3.zip
Wie kann ich die plugins dateien in das Projekt einbinden. DAs sind lauter jar dateien. Kann ich sowas nicht instaliieren?
-
Das läuft unter Eclipse anders, du kannst die Dateien ganz einfach in das Eclipse-Verzeichnis entpacken (also alles aus plugins nach Eclipse\plugins und alles aus features nach Eclipse\features).
Aber VE alleine läuft nicht, du brauchst noch zwei andere Plugins auf denen VE aufbaut: EMF und GEF
MfG SideWinder
-
ich habe einen File runtergeladen und die ganzen Plugins eingefügt und es funktioniert bis jetzt einwandfrei.
Ich habe mir einen JFrame erzeugt mit Borderlayout. Oben habe ich einen JInternalFrame eingefügt und unten einen Panel mit Gridlayout und die Buttons dort hinzugefügt. So dann hatte ich diesen Code:
package anlageSimulation; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagLayout; import javax.swing.JInternalFrame; import java.awt.CardLayout; import javax.swing.JToolBar; import javax.swing.JButton; import java.awt.GridBagConstraints; import java.awt.GridLayout; public class AnlageSim { private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="39,36" private JPanel jContentPane = null; private JPanel jPanel = null; private JInternalFrame jInternalFrame = null; private JPanel jContentPane1 = null; private JButton jButtonleer1 = null; private JButton jButtonleer4 = null; private JButton jButton2 = null; private JButton jButton5 = null; private JButton jButton9 = null; private JButton jButton4 = null; private JButton jButton3 = null; private JButton jButton1 = null; private JButton jButton8 = null; private JButton jButton7 = null; private JButton jButton11 = null; private JButton jButton12 = null; private JButton jButton13 = null; private JButton jButton14 = null; private JButton jButton6 = null; private JButton jButtonleer2 = null; private JButton jButtonleer3 = null; private JButton jButton10 = null; /** * This method initializes jFrame * * @return javax.swing.JFrame */ private JFrame getJFrame() { if (jFrame == null) { jFrame = new JFrame(); jFrame.setSize(new Dimension(1024, 768)); jFrame.setPreferredSize(new Dimension(1024, 768)); jFrame.setTitle("Anlagensimulation"); jFrame.setContentPane(getJContentPane()); } return jFrame; } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJPanel(), BorderLayout.SOUTH); jContentPane.add(getJInternalFrame(), BorderLayout.NORTH); } return jContentPane; } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { GridLayout gridLayout = new GridLayout(); gridLayout.setRows(3); jPanel = new JPanel(); jPanel.setLayout(gridLayout); jPanel.setPreferredSize(new Dimension(1024, 100)); jPanel.add(getJButtonleer1(), null); jPanel.add(getJButton11(), null); jPanel.add(getJButton12(), null); jPanel.add(getJButton13(), null); jPanel.add(getJButton14(), null); jPanel.add(getJButtonleer3(), null); jPanel.add(getJButtonleer4(), null); jPanel.add(getJButton7(), null); jPanel.add(getJButton8(), null); jPanel.add(getJButton9(), null); jPanel.add(getJButton10(), null); jPanel.add(getJButtonleer2(), null); jPanel.add(getJButton1(), null); jPanel.add(getJButton2(), null); jPanel.add(getJButton3(), null); jPanel.add(getJButton4(), null); jPanel.add(getJButton5(), null); jPanel.add(getJButton6(), null); } return jPanel; } /** * This method initializes jInternalFrame * * @return javax.swing.JInternalFrame */ private JInternalFrame getJInternalFrame() { if (jInternalFrame == null) { jInternalFrame = new JInternalFrame(); jInternalFrame.setPreferredSize(new Dimension(1024, 641)); jInternalFrame.setVisible(true); jInternalFrame.setContentPane(getJContentPane1()); } return jInternalFrame; } /** * This method initializes jContentPane1 * * @return javax.swing.JPanel */ private JPanel getJContentPane1() { if (jContentPane1 == null) { jContentPane1 = new JPanel(); jContentPane1.setLayout(new BorderLayout()); jContentPane1.setPreferredSize(new Dimension(100, 100)); } return jContentPane1; } /** * This method initializes jButtonleer1 * * @return javax.swing.JButton */ private JButton getJButtonleer1() { if (jButtonleer1 == null) { jButtonleer1 = new JButton(); jButtonleer1.setText(""); jButtonleer1.setEnabled(false); jButtonleer1.setActionCommand("RB1"); } return jButtonleer1; ...... }
Mein Problem ist, dass ich in der Klasse einen Main erzeuge, aber dort weder die Buttons noch das Frame verändern kann. so ungefähr:
public static void main(String[] args){ jInternalFrame.add(new AnlageSim(args)); // hier wird das jInternalFrame nicht anerkannt!! WIESO }
Liegt das daran, dass ich das main als public static deklariere? Wieso kann ich es nicht als Java Applikation ausführen, wenn ich den static im main weglasse? Kann mir bitte jemand bisschen weiterhelfen, komme echt nicht mehr weiter. DANKEE