kostenloser Webspace werbefrei: lima-city


jcombobox vs. stringarray

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    also ich hab eine jcombobox und einen string-array der die items angibt mach das auch alles so wies sein soll allerdings kommt wenn ich das programm starte in der combobox nur ein item "java.lang.String@" und irgendeine speichernummer oder so was kann das sein?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Wie übergibst du dein Array denn der Combobox?
  4. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    per .addItem( String[] )
    vorallem gib´ngs ja mal nur ich hab dann weiter gemacht weil ich dachte das es funktioniert aber dann gings auf einmal nicht mehr

    die combobox enthält eine liste der verfügbaren sprachen für das programm ist also teil der einstellungen das problem trat auf als es daran ging die einstellungen in einer datei ( settings.ini ) zu speichern falls das irgendwie weiterhilft
  5. e********l

    Wieso übergibst du die Strings nicht einfach im Konstruktor oder über setDataModel()?
  6. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    nicht im konstruktor weils static ist und der string erst später erstellt wird und das ist es weil ich mit einem actionlistener ja das ausgewählte element erfragen will und sonst irgendein fehler auftriit den ich net versteh irgendwas von mit inner class und final
    das andere muss ich mal ausprobieren

    Beitrag geändert: 17.10.2007 15:42:06 von reimann
  7. e********l

    Welch perfieden Code fabrizierst du? Zeig mal bitte her.
  8. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    weiß nich wie ichs kürzen sollte also in voller länge
    englisch fehler bitte ignorieren^^
    das ist er:

    package pima.arpg;

    import java.lang.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.imageio.*;
    import javax.swing.*;

    public class Server {

    static MenuItem start = new MenuItem( "Start" );
    static MenuItem stop = new MenuItem( "Stop" );
    static File ini = new File( "bin/settings.ini" );;
    static File dotlang;
    static FileInputStream instream;
    static FileOutputStream outstream;
    static JFrame frame = new JFrame( "Einstellungen" );
    static JComboBox combo = new JComboBox();
    static JTextField numrpg = new JTextField();
    static JTextField playrpg = new JTextField();

    static byte error = 0;
    static byte lan = 0;
    static byte maxrpg = 10;
    static byte maxplayer = 10;
    static byte[] settings;
    static String language = "deutsch";

    protected Server() {
    // this will stay empty
    }

    public static void main( String[] args ) {
    // this is the course of the applicatioon
    init();
    boolean started = start();
    if( started == true ) {
    execute();
    }
    else {
    error = 2;
    exit();
    }
    }

    public static void init() {
    // read the settings
    if( !ini.exists() ) {
    try {
    ini.createNewFile();
    }
    catch( Exception e ) {
    error = 3;
    }
    JOptionPane.showMessageDialog( null, "Bitte konfigurieren Sie das Programm im folgenden Fenster.\nPlease configure the application in the following window." );
    open();
    }
    else {
    // reading the settings.ini file
    settings = new byte[ (int) ini.length() ];
    try {
    instream = new FileInputStream( ini );
    instream.read( settings );
    instream.close();
    }
    catch( Exception e ) {
    error = 3;
    exit();
    }
    // setting parameters
    if( settings[0] == 1 ) {
    language = "deutsch";
    }
    else if( settings[0] == 2 ) {
    language = "english";
    }
    else if( settings[0] == 3 ) {
    language = "francais";
    }
    maxrpg = settings[1];
    maxplayer = settings[2];
    }
    }

    public static boolean start() {
    try {
    // declare lot of different stuff
    SystemTray systray = SystemTray.getSystemTray();
    PopupMenu popup = new PopupMenu();
    MenuItem open = new MenuItem( "Öffnen" );
    MenuItem exit = new MenuItem( "Beenden" );
    // add the attributes and actionlistener
    start.setEnabled( false );
    open.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    open();
    }
    } );
    start.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    stop.setEnabled( true );
    start.setEnabled( false );
    execute();
    }
    } );
    stop.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    stop.setEnabled( false );
    start.setEnabled( true );
    stop();
    }
    } );
    exit.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    exit();
    }
    } );
    // add the components to the popupmenu
    popup.add( open );
    popup.addSeparator();
    popup.add( start );
    popup.add( stop );
    popup.addSeparator();
    popup.add( exit );
    // the last thing is add the popupmenu to the systemtray
    Image traycon = ImageIO.read( new File( "bin/tray.gif" ) );
    TrayIcon tron = new TrayIcon( traycon, "ARPG Server", popup );
    systray.add( tron );
    }
    catch( Exception e ) {
    error = 2;
    return false;
    }
    return true;
    }

    public static void open() {
    // set parameters of the frame
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setSize( 230, 220 );
    frame.setResizable( false );
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation( (d.width - frame.getSize().width ) / 2,
    (d.height - frame.getSize().height) / 2 );
    frame.setLayout( null );
    // declare and set the parameters of the components
    String[] lang = { "deutsch", "english", "francais" };
    JLabel langlab = new JLabel( "Sprache" );
    langlab.setBounds( 10, 10, 210, 20 );
    langlab.setVisible( true );
    combo.setItem( lang );
    combo.setSelectedItem( "deutsch" );
    combo.setBounds( 10, 30, 210, 20 );
    combo.setVisible( true );
    JLabel rpglab = new JLabel( "Maximale Anzahl der RPGs" );
    rpglab.setBounds( 10, 60, 210, 20 );
    rpglab.setVisible( true );
    numrpg.setBounds( 10, 80, 210, 20 );
    numrpg.setVisible( true );
    JLabel playlab = new JLabel( "Maximale Anzahl der Spieler pro RPG" );
    playlab.setBounds( 10, 110, 210, 20 );
    playlab.setVisible( true );
    playrpg.setBounds( 10, 130, 210, 20 );
    playrpg.setVisible( true );
    JButton save = new JButton( "Speichern" );
    save.setBounds( 10, 160, 100, 20 );
    save.setVisible( true );
    JButton abort = new JButton( "Abbrechen" );
    abort.setBounds( 120, 160, 100, 20 );
    abort.setVisible( true );
    // set the Actionlistener of the JButtons
    save.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    if ( combo.getSelectedItem().equals( "deutsch" ) ) {
    lan = 1;
    }
    else if( combo.getSelectedItem().equals( "english" ) ) {
    lan = 2;
    }
    else if( combo.getSelectedItem().equals( "francais" ) ) {
    lan = 3;
    }
    maxrpg = (byte) Integer.parseInt( numrpg.getText() );
    maxplayer = (byte) Integer.parseInt( playrpg.getText() );
    if( maxrpg > 1 && maxrpg < 51 && maxplayer > 1 && maxplayer < 21 ) {
    try {
    outstream = new FileOutputStream( ini );
    byte[] write = { lan, maxrpg, maxplayer };
    outstream.write( write );
    outstream.close();
    }
    catch( Exception e ) {
    error = 3;
    exit();
    }
    frame.setVisible( false );
    }
    else {
    JOptionPane.showMessageDialog( null, "Die maximale RPGzahl muss zwischen 1 und 50 liegen und\n die maximale Zahl der Spiele muss zwischen 1 und 20 liegen." );
    }
    }
    } );
    abort.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent a) {
    frame.setVisible( false );
    }
    } );
    // add the components to the frame
    frame.add( langlab );
    frame.add( combo );
    frame.add( rpglab );
    frame.add( numrpg );
    frame.add( playlab );
    frame.add( playrpg );
    frame.add( save );
    frame.add( abort );
    // finally this frame will become visible
    frame.setVisible( true );
    }

    public static void execute() {

    }

    public static void stop() {

    }

    public static void exit() {
    // looking for errors and reporting
    if( error == 1 ) {
    JOptionPane.showMessageDialog( null, "Es ist ein unbekannter Fehler aufgetreten.\nBitte informieren sie mich mit einer Email an\npimanapplications@online.de. Danke!" );
    }
    else if( error == 2 ) {
    JOptionPane.showMessageDialog( null, "Der Server konnte aufgrund eines Systemtrayfehlers nicht starten.\nEventuell hilft die Installation einer neueren Version des JavaRuntimeEnvironment." );
    }
    else if( error == 3) {
    JOptionPane.showMessageDialog( null, "Leider kann die Datei settings.ini nicht gelesen/erstellt werden.\nDas Programm wird beendet." );
    }
    else if( error == 4 ) {
    JOptionPane.showMessageDialog( null, "Leider kann die Sprachdatei nicht gelesen werden.\nDas Programm wird beendet." );
    }



    stop();
    System.exit(0);
    }

    }


    Beitrag geändert: 17.10.2007 16:03:14 von reimann
  9. e********l

    Args, was ist denn das f&#252;r ein Krampf?

    Ok...warum auch immer du alles statisch gemacht hat frag ich einfach mal nicht. Sobald ich zuhause bin schmeiss ich das in Eclipse und schau es mir genauer an.

    Dein angesprochenes Problem von wegen du wei&#223;t nicht wie du auf die Eventquelle zugreifen kannst ist einfach zu l&#246;sen.

    A) Du schreibst eine Action der du das zu behandelne Objekt als Referenz &#252;bergibst
    B) Du fragst das Event nach dem Eventverursache und setzt dann den entsprechenden Typcast.
  10. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    das meiste mach ich static weil ich dann mit allen methoden bindend einfluss darauf hab

    und mit dem als referenz geben ist ne gute idee

    Beitrag geändert: 17.10.2007 17:06:35 von reimann
  11. e********l

    Naja, wenn man statische Methoden ein einer Klasse verwendet die eigentlich nur Logik enthalten soll, sollte man sich ernsthaft &#252;berlegen nicht doch was falsch gemacht zu haben.

    Singletons und Util Klassen erhalten bei mir statische Methoden, alles andere sind Objekt Methoden.
  12. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    na in dem fall ist die klasse ja das programm also muss man kein exemplar davon machen und deshalb beziehn sich die methoden nicht auf die klasse also sind sie ungebunden eben static
    au&#223;erdem war das static machen auf objekte bezogen und nicht auf methoden objecte die ich nicht nur in einer methode brauche mach ich statisch

    Beitrag geändert: 17.10.2007 18:21:27 von reimann
  13. e********l

    @statisch: Dazu f&#228;llt mir nur noch folgendes ein: "Wenn du eine Blume umtopfen willst, topfst du sie dann zusammen mit dem alten Topf in einen neuen Topf um?"

    So ungef&#228;hr machst du das mit deinen ganzen statics gerade...

    Naja...bin nun zuhaus und kann es mir anschauen :)

    //edit: So, hab es mir angeschaut. nach aktuellen Stand der Dinge kannst du da wenig machen
    Zum einen hei&#223;t die Methode zum hinzuf&#252;gen nicht "setItem" sondern "addItem" und du musst zum dynamischen hinzuf&#252;gen das DataModel auf MutableComboBoxModel setzen.

    *mal weiter aufr&#228;um*

    Beitrag geändert: 17.10.2007 20:01:02 von evil-devil
  14. e********l

    Ok, deinen Code aufzur&#228;umen dauert mit zu lange.
    Generell startet man auch eine einzelne Applikation &#252;ber die main() und erzeugt damit ein Objekt von der Anwendung.

    Ok, hier mal ein Beispiel aus einer meiner Anwendungen. Ist etwas l&#228;nger.
    /* =============================================================================
     * BubbleModelViewer.java Bubble_Engine 
     * com.evildevil.bubble.tools
     * Copyright (c) 2004 - 2005 Benjamin "Evil-Devil" Behrendt
     * All rights reserved
     * -------------------------------------------------------------------------- */
    package com.evildevil.bubble.tools.model;
    
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.util.Hashtable;
    
    import javax.swing.AbstractAction;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JDialog;
    import javax.swing.JEditorPane;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JSlider;
    import javax.swing.JTextField;
    
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.TitledBorder;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import javax.swing.text.html.HTMLEditorKit;
    
    import org.lwjgl.LWJGLException;
    
    import com.evildevil.bubble.core.AWTOpenGLCanvas;
    
    import com.evildevil.tools.designtools.Screen;
    
    /**
     * @author Benjamin "Evil-Devil" Behrendt
     * @version 1.0, 11.11.2005
     */
    public class BubbleModelViewer {
        
        private final String APP_TITLE = "Bubble Model Viewer";
        private final String APP_ABOUT_IMAGE_NAME = "resources/Bubble_Engine_Logo_Small.png";
        private final float APP_VERSION = 1.1f;
        private final String APP_ABOUT_TEXT = "<html><h2>"+APP_TITLE+"</h2><hr>"+
                                    "<strong>Version:</strong> "+APP_VERSION+"<br><br>"+
                                    "<strong><em>(c) Copyright 2005 Benjamin &quot;Evil-Devil&quot; Behrendt<br>"+
                                    "All rights reserved</em></strong><hr>"+
                                    "Visit us at: <a href=\"http://www.evil-devil.com\" target=\"_blank\" style=\"hover:font-weight: bold;\">"+
                                    "http://www.evil-devil.com</a></html>";
        
        private JFrame mvFrame = null;
        private AWTOpenGLCanvas awtOGLCanvas = null;
        private JMenuBar mvMenuBar = null;
        
        private JCheckBox autoRot;
        private JCheckBox autoRotX;
        private JCheckBox autoRotY;
        private JCheckBox autoRotZ;
        private final JSlider rotXSpeed = createControlSlider(-100,100,0,10,5);
        private final JSlider rotYSpeed = createControlSlider(-100,100,0,10,5);
        private final JSlider rotZSpeed = createControlSlider(-100,100,0,10,5);
        private final JSlider moveXSpeed = createControlSlider(-100,100,0,10,5);
        private final JSlider moveYSpeed = createControlSlider(-100,100,0,10,5);
        private final JSlider moveZSpeed = createControlSlider(-100,100,0,10,5);
        private final JTextField rotX = new JTextField("0");
        private final JTextField rotY = new JTextField("0");
        private final JTextField rotZ = new JTextField("0");
        private final JTextField moveX = new JTextField("0");
        private final JTextField moveY = new JTextField("0");
        private final JTextField moveZ = new JTextField("0");
        private JCheckBox texturing;
        private JCheckBox wireframe;
        private JCheckBox lighting;
        
        public BubbleModelViewer() {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
        
        private void createAndShowGUI() {
            mvFrame = new JFrame(this.APP_TITLE);
            mvFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            // add menu
            mvFrame.setJMenuBar(createModelViewerMenu());
            
            JPanel mvPanel = new JPanel();          // becomes our ContentPane
            JPanel displayPanel = new JPanel();     // will hold the GLCanvas
            JPanel toolPanel = new JPanel();        // takes our tools        
            JPanel consolePanel = new JPanel();     // takes our output console
            JPanel renderAutoPanel = new JPanel();
            renderAutoPanel.setLayout(new BoxLayout(renderAutoPanel,BoxLayout.LINE_AXIS));
            renderAutoPanel.add(createRenderingPanel());
            renderAutoPanel.add(Box.createRigidArea(new Dimension(8,0)));
            renderAutoPanel.add(createAutoRotationPanel());
            
            // mvPanel setup
            mvPanel.setLayout(new BoxLayout(mvPanel,BoxLayout.LINE_AXIS));
            
            // displayPanel setup
            displayPanel.setLayout(new BorderLayout());
            displayPanel.setMaximumSize(new Dimension(640,480));
            try {
                awtOGLCanvas = new AWTOpenGLCanvas(new ModelViewerRenderer());
                awtOGLCanvas.setSize(640,480);
                // init the scene data
            } catch (LWJGLException lwjgle) {
                lwjgle.printStackTrace();
            }
            displayPanel.add(awtOGLCanvas,BorderLayout.CENTER);
            
            // toolPanel setup
            toolPanel.setLayout(new BoxLayout(toolPanel,BoxLayout.PAGE_AXIS));
            toolPanel.setBorder(new EmptyBorder(2,4,2,2));
            toolPanel.add(renderAutoPanel);
            toolPanel.add(Box.createRigidArea(new Dimension(0,9)));
            toolPanel.add(createTranslationPanel());
            toolPanel.add(Box.createRigidArea(new Dimension(0,9)));
            toolPanel.add(createRotationPanel());
            
            // add everything
            mvPanel.add(displayPanel);
            mvPanel.add(toolPanel);
            mvFrame.getContentPane().add(mvPanel);
            
            // pack it and set the position
            mvFrame.pack();
            mvFrame.setLocation(Screen.getCenteredTopLeftPosition(mvFrame.getSize()));
            
            // Display the stuff
            mvFrame.setResizable(false);
            awtOGLCanvas.setVisible(true);
            mvFrame.setVisible(true);
        }
        
        private JPanel createRotationPanel() {
            final JPanel rotPanel = new JPanel();    // the final panel
            final TitledBorder title = new TitledBorder("Rotation");
            JPanel buttonPanel;
            JPanel sliderPanel;
            JPanel fieldPanel;
            
            rotPanel.setAlignmentY(Component.LEFT_ALIGNMENT);
            rotPanel.setBorder(title);
            rotPanel.setLayout(new BoxLayout(rotPanel,BoxLayout.LINE_AXIS));
            
            // create and add the buttons
            buttonPanel = new JPanel();
            buttonPanel.setLayout(new BoxLayout(buttonPanel,BoxLayout.PAGE_AXIS));
            buttonPanel.add(createControlButton("Rotate X",new RotateAction("X")));
            buttonPanel.add(Box.createRigidArea(new Dimension(0,35)));
            buttonPanel.add(createControlButton("Rotate Y",new RotateAction("Y")));
            buttonPanel.add(Box.createRigidArea(new Dimension(0,38)));
            buttonPanel.add(createControlButton("Rotate Z",new RotateAction("Z")));
            
            rotPanel.add(buttonPanel);
            rotPanel.add(Box.createRigidArea(new Dimension(16,0)));
            
            // create and add the sliders
            sliderPanel = new JPanel();
            sliderPanel.setLayout(new BoxLayout(sliderPanel,BoxLayout.PAGE_AXIS));
            JLabel sliderLabel = createControlLabel("Speed");
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            rotXSpeed.addChangeListener(new SliderAction("RX",rotX));
            sliderPanel.add(sliderLabel);
            sliderPanel.add(rotXSpeed);
            
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            rotYSpeed.addChangeListener(new SliderAction("RY",rotY));
            sliderPanel.add(Box.createRigidArea(new Dimension(0,10)));
            sliderPanel.add(rotYSpeed);
            
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            rotZSpeed.addChangeListener(new SliderAction("RZ",rotZ));
            sliderPanel.add(Box.createRigidArea(new Dimension(0,10)));
            sliderPanel.add(rotZSpeed);
            rotPanel.add(sliderPanel);
            rotPanel.add(Box.createRigidArea(new Dimension(16,0)));
            
            // create and add the textfields
            fieldPanel = new JPanel();
            fieldPanel.setLayout(new BoxLayout(fieldPanel,BoxLayout.PAGE_AXIS));
            fieldPanel.add(Box.createRigidArea(new Dimension(0,12)));
            rotX.setColumns(4);
            rotX.addActionListener(new SliderFieldAction(rotXSpeed,"RX"));
            fieldPanel.add(rotX);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,30)));
            rotY.setColumns(4);
            rotY.addActionListener(new SliderFieldAction(rotYSpeed,"RY"));
            fieldPanel.add(rotY);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,38)));
            rotZ.setColumns(4);
            rotZ.addActionListener(new SliderFieldAction(rotZSpeed,"RZ"));
            fieldPanel.add(rotZ);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,12)));
            rotPanel.add(fieldPanel);
            
            return rotPanel;
        }
        
        private JPanel createAutoRotationPanel() {
            final JPanel rotPanel = new JPanel();
            final TitledBorder title = new TitledBorder("Auto-Rotation");
            
            rotPanel.setAlignmentY(Component.LEFT_ALIGNMENT);
            rotPanel.setLayout(new BoxLayout(rotPanel,BoxLayout.PAGE_AXIS));
            rotPanel.setBorder(title);
            
            final JPanel autoPanel = new JPanel();
            autoPanel.setLayout(new BoxLayout(autoPanel,BoxLayout.LINE_AXIS));
            autoPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
            autoPanel.add(autoRot = createControlCheckBox("Enable",new RenderingAndAutoRotateAction("AUTO"),true,false));
            
            final JPanel xyzPanel = new JPanel();
            xyzPanel.setLayout(new BoxLayout(xyzPanel,BoxLayout.LINE_AXIS));
            xyzPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
            xyzPanel.add(autoRotX = createControlCheckBox("X",new RenderingAndAutoRotateAction("X"),false,false));
            xyzPanel.add(Box.createRigidArea(new Dimension(16,0)));
            xyzPanel.add(autoRotY = createControlCheckBox("Y",new RenderingAndAutoRotateAction("Y"),false,false));
            
            xyzPanel.add(Box.createRigidArea(new Dimension(16,0)));
            xyzPanel.add(autoRotZ = createControlCheckBox("Z",new RenderingAndAutoRotateAction("Z"),false,false));
            
            rotPanel.add(autoPanel);
            rotPanel.add(Box.createVerticalStrut(8));
            rotPanel.add(xyzPanel);
            
            return rotPanel;
        }
        
        private JPanel createTranslationPanel() {
            final JPanel rotPanel = new JPanel();    // the final panel
            final TitledBorder title = new TitledBorder("Translation");
            JPanel buttonPanel;
            JPanel sliderPanel;
            JPanel fieldPanel;
            
            rotPanel.setAlignmentY(Component.LEFT_ALIGNMENT);
            rotPanel.setBorder(title);
            rotPanel.setLayout(new BoxLayout(rotPanel,BoxLayout.LINE_AXIS));
            
            // create and add the buttons with the apropriate listeners
            buttonPanel = new JPanel();
            buttonPanel.setLayout(new BoxLayout(buttonPanel,BoxLayout.PAGE_AXIS));
            buttonPanel.add(createControlButton("Transl. X",new TranslateAction("X")));
            buttonPanel.add(Box.createRigidArea(new Dimension(0,35)));
            buttonPanel.add(createControlButton("Transl. Y",new TranslateAction("Y")));
            buttonPanel.add(Box.createRigidArea(new Dimension(0,38)));
            buttonPanel.add(createControlButton("Transl. Z",new TranslateAction("Z")));
            
            rotPanel.add(buttonPanel);
            rotPanel.add(Box.createRigidArea(new Dimension(16,0)));
            
            // create and add the sliders
            sliderPanel = new JPanel();
            sliderPanel.setLayout(new BoxLayout(sliderPanel,BoxLayout.PAGE_AXIS));
            JLabel sliderLabel = createControlLabel("Speed");
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            moveXSpeed.addChangeListener(new SliderAction("TX",moveX));
            sliderPanel.add(sliderLabel);
            sliderPanel.add(moveXSpeed);
            
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            moveYSpeed.addChangeListener(new SliderAction("TY",moveY));
            sliderPanel.add(Box.createRigidArea(new Dimension(0,10)));
            sliderPanel.add(moveYSpeed);
            
            sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
            moveZSpeed.addChangeListener(new SliderAction("TZ",moveZ));
            sliderPanel.add(Box.createRigidArea(new Dimension(0,10)));
            sliderPanel.add(moveZSpeed);
            rotPanel.add(sliderPanel);
            rotPanel.add(Box.createRigidArea(new Dimension(16,0)));
            
            // create and add the textfields
            fieldPanel = new JPanel();
            fieldPanel.setLayout(new BoxLayout(fieldPanel,BoxLayout.PAGE_AXIS));
            fieldPanel.add(Box.createRigidArea(new Dimension(0,12)));
            moveX.setColumns(4);
            moveX.addActionListener(new SliderFieldAction(moveXSpeed,"TX"));
            fieldPanel.add(moveX);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,30)));
            moveY.setColumns(4);
            moveY.addActionListener(new SliderFieldAction(moveYSpeed,"TY"));
            fieldPanel.add(moveY);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,38)));
            moveZ.setColumns(4);
            moveZ.addActionListener(new SliderFieldAction(moveZSpeed,"TZ"));
            fieldPanel.add(moveZ);
            fieldPanel.add(Box.createRigidArea(new Dimension(0,12)));
            rotPanel.add(fieldPanel);
            
            return rotPanel;
        }
        
        private JPanel createRenderingPanel() {
            final JPanel renderPanel = new JPanel();
            final TitledBorder title = new TitledBorder("Rendering");
            
            renderPanel.setAlignmentY(Component.LEFT_ALIGNMENT);
            renderPanel.setBorder(title);
            renderPanel.setLayout(new BoxLayout(renderPanel,BoxLayout.PAGE_AXIS));
            
            JPanel panel = new JPanel();
            panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS));
            panel.setAlignmentX(Component.LEFT_ALIGNMENT);
            panel.add(texturing = createControlCheckBox("Texturing",new RenderingAndAutoRotateAction("TEXTURE"),true));
            panel.add(Box.createRigidArea(new Dimension(13,0)));
            panel.add(lighting = createControlCheckBox("Lighting",new RenderingAndAutoRotateAction("LIGHT"),true));
            renderPanel.add(panel);
            renderPanel.add(Box.createRigidArea(new Dimension(0,8)));
            
            panel = new JPanel();
            panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS));
            panel.setAlignmentX(Component.LEFT_ALIGNMENT);
            panel.add(wireframe = createControlCheckBox("Wireframe",new RenderingAndAutoRotateAction("WIREFRAME"),false));
            panel.add(Box.createRigidArea(new Dimension(4,0)));
            panel.add(createControlCheckBox("Reset all",new RenderingAndAutoRotateAction("RESET"),false));
            renderPanel.add(panel);
            
            return renderPanel;
        }
        
        private void setAutoRotate(boolean auto) {
            this.autoRotX.setEnabled(auto);
            this.autoRotY.setEnabled(auto);
            this.autoRotZ.setEnabled(auto);
        }
        
        
        
        private JLabel createControlLabel(String title) {
            final JLabel label = new JLabel(title);
            return label;
        }
    
        private JButton createControlButton(String title) {
            final JButton button = new JButton(title);
            // we want small buttons ^_^
            button.setMargin(new Insets(1,8,0,8));
            return button;
        }
        
        private JButton createControlButton(String title, ActionListener listener) {
            final JButton button = createControlButton(title);
            button.addActionListener(listener);
            return button;
        }
        
        private JCheckBox createControlCheckBox(String title, ItemListener listener, boolean enabled, boolean selected) {
            final JCheckBox box = createControlCheckBox(title,listener,selected);
            box.setEnabled(enabled);
            return box;
        }
        
        private JCheckBox createControlCheckBox(String title, ItemListener listener, boolean selected) {
            final JCheckBox box = new JCheckBox(title);
            box.setSelected(selected);
            box.addItemListener(listener);
            return box;
        }
        
        private JSlider createControlSlider(int min, int max, int start,int major, int minor) {
            final JSlider slider = new JSlider(min,max,start);
            final Hashtable<Integer,JLabel> sliderTexts = new Hashtable<Integer,JLabel>();
            sliderTexts.put(min,new JLabel(Float.toString(min/major)));
            sliderTexts.put(start,new JLabel(Float.toString(start)));
            sliderTexts.put(max,new JLabel(Float.toString(max/major)));
            
            slider.setMajorTickSpacing(major);
            slider.setMinorTickSpacing(minor);
            slider.setLabelTable(sliderTexts);
            slider.setPaintTicks(true);
            slider.setPaintTrack(true);
            slider.setPaintLabels(true);
            return slider;
        }
        
        private JMenuBar createModelViewerMenu() {
            final JMenuBar bar = new JMenuBar();
            JPopupMenu.setDefaultLightWeightPopupEnabled(false);    // disable leightweight
            JMenu menu = new JMenu("File");
            menu.add(createMenuItem("Open",new OpenAction()));
            //menu.addSeparator();
            //menu.add(createMenuItem("Show Temple Model",new ShowAction("temple_tex.obj")));
            //menu.add(createMenuItem("Show F16 Model",new ShowAction("AF_F16.obj")));
            //menu.addSeparator();
            menu.add(createMenuItem("Preferences",new PreferencesAction()));
            menu.add(createMenuItem("Take Screenshot",new ScreenShotAction()));
            menu.add(createMenuItem("Exit",new ExitAction()));
            bar.add(menu);
            menu = new JMenu("?");
            menu.add(createMenuItem("About",new AboutAction()));
            bar.add(menu);
            JPopupMenu.setDefaultLightWeightPopupEnabled(true);     // enable leightweight
            return bar;
        }
        
        private JMenuItem createMenuItem(String name, ActionListener listener) {
            final JMenuItem item = new JMenuItem(name);
            item.addActionListener(listener);
            return item;
        }
        
        private void reset() {
            // reset all checkboxes and sliders we have
            texturing.setSelected(true);
            lighting.setSelected(true);
            wireframe.setSelected(false);
            
            // reset the autorot stuff
            autoRot.setSelected(false);
            autoRotX.setSelected(false);
            autoRotY.setSelected(false);
            autoRotZ.setSelected(false);
            
            // reset the rotspeed sliders
            rotXSpeed.setValue(0);
            rotYSpeed.setValue(0);
            rotZSpeed.setValue(0);
            
            // reset the transspeed sliders
            moveXSpeed.setValue(0);
            moveYSpeed.setValue(0);
            moveZSpeed.setValue(0);
            
            // reset also the rotation and translation of the model
            getRenderer().reset();
        }
        
        public ModelViewerRenderer getRenderer() {
            return (ModelViewerRenderer)awtOGLCanvas.getRenderer();
        }
        
        /* =========================================================================
         * MAIN Entrance
         * ---------------------------------------------------------------------- */
        public static void main(String[] args) {
            BubbleModelViewer bmv = new BubbleModelViewer();
        }
        
        /* =========================================================================
         * ACTIONS
         * ---------------------------------------------------------------------- */
        class ExitAction extends AbstractAction {
            
            public void actionPerformed(ActionEvent e) {
                mvFrame.dispose();
                System.exit(0);     // just to make sure the JVM will exit
            }
        }
        
        class AboutAction extends AbstractAction {
            
            public void actionPerformed(ActionEvent e) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        createAboutDialog();
                    }
                });
            }
            
            private void createAboutDialog() {
                final JDialog dialog = new JDialog(mvFrame,"About",true);
                dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                JPanel panel = new JPanel();
                panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
                panel.setBorder(new EmptyBorder(5,5,5,5));
                
                JEditorPane textPane = new JEditorPane();
                textPane.setEditable(false);
                textPane.setBackground(dialog.getBackground());
                textPane.setEditorKit(new HTMLEditorKit());
                textPane.setText(APP_ABOUT_TEXT);
                panel.add(textPane);
                
                JButton okButton = new JButton("OK");
                okButton.setAlignmentX(Component.RIGHT_ALIGNMENT);
                okButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        dialog.dispose();
                    }
                });
                panel.add(Box.createRigidArea(new Dimension(0,8)));
                panel.add(okButton);
                dialog.setContentPane(panel);
                
                // packing :)
                dialog.pack();
                // center it
                dialog.setLocation(Screen.getCenteredTopLeftPosition(dialog.getSize()));
                dialog.setVisible(true);
            }
        }
        
        class OpenAction extends AbstractAction {
            
            public void actionPerformed(ActionEvent e) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        showOpenDialog();
                    }
                });
            }
            
            private void showOpenDialog() {
                JFileChooser fc = new JFileChooser("models/");
                int result = fc.showOpenDialog(mvFrame);
                
                if (result == JFileChooser.APPROVE_OPTION) {
                    // we assign the rendercanvas to our own one :)
                    final ModelViewerRenderer renderer = getRenderer();
                    // only load the model if the canvas that is used by the renderer
                    // acknowlegded the renderer that its ready
                    if (renderer.isInitialized()) {
                        // reset any modified controls
                        reset();
                        // reset the renderer just to be sure there is no old data rest
                        renderer.resetRenderer();
                        // set the modelFileName
                        renderer.setModelFileName(fc.getSelectedFile().getName());
                        // init the data
                        if (renderer == null)
                            System.out.println("Renderer is null");
                        else
                            System.out.println("Renderer is valid");
                        renderer.initScene();
                        // we got the data, now pre-render it
                        renderer.preRenderScene();
                        // everything is done, the model should now be displayed
                    }
                }
            }
        }
        
        class PreferencesAction extends AbstractAction {
            private float fov = 0f;
            private boolean needUpdate = false;
            
            public void actionPerformed(ActionEvent e) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        showPreferences();
                    }
                });
            }
            
            private void showPreferences() {
                final JDialog dialog = new JDialog(mvFrame,"Preferences",true);
                final JButton okButton = new JButton("OK");
                final JButton cancelButton = new JButton("Cancel");
                final JButton applyButton = new JButton("Apply");
                dialog.setSize(223,98);
                final float x = mvFrame.getX() + mvFrame.getWidth()/2 - dialog.getWidth()/2;
                final float y = mvFrame.getY() + mvFrame.getHeight()/2 - dialog.getHeight()/2;
                dialog.setLocation((int)x,(int)y);
                JPanel dialogPanel = new JPanel();
                dialogPanel.setLayout(new BoxLayout(dialogPanel,BoxLayout.PAGE_AXIS));
                dialogPanel.setBorder(new EmptyBorder(5,5,5,5));
                
                // build the dialog GUI
                JPanel panel = new JPanel();
                final JTextField fovField = new JTextField(Float.toString(getRenderer().getFOV()));
                fovField.setColumns(5);
                fovField.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                       final JTextField source = (JTextField)e.getSource();
                       if (source.getText() == null || source.getText().length() == 0)
                           return;
                       try {
                           fov = Float.parseFloat(source.getText());
                       } catch (NumberFormatException nfe) {
                           source.setText(Float.toString(getRenderer().getFOV()));
                       }
                       // as the value was changed or even not, disable the ok button and enable apply button
                       okButton.setEnabled(false);
                       applyButton.setEnabled(true);
                   }
                });
                panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS));
                panel.add(createControlLabel("Field Of View (FOV):"));
                panel.add(Box.createRigidArea(new Dimension(8,0)));
                panel.add(fovField);
                dialogPanel.add(panel);
                dialogPanel.add(Box.createRigidArea(new Dimension(0,8)));
                
                panel = new JPanel();
                okButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        // call the renderer updateFOV()
                        // only update if the new fov differs from the current
                        if (needUpdate) {
                            // make sure that we have a valid renderer,
                            // for the case that someone change something within
                            // the preferences before everything else
                            getRenderer().updateFOV();
                            needUpdate = false;
                        }
                        // exit the dialog
                        dialog.dispose();
                    }
                });
                
                cancelButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        // just exist without doing something;
                        dialog.dispose();
                    }
                });
                
                applyButton.setEnabled(false);
                applyButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        // update the fov value
                        if (fov > 0f && fov != getRenderer().getFOV())
                            getRenderer().setFOV(fov);
                        // enable the ok button
                        okButton.setEnabled(true);
                        // disable you
                        applyButton.setEnabled(false);
                        needUpdate = true;
                    }
                });
                panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS));
                panel.add(okButton);
                panel.add(Box.createRigidArea(new Dimension(8,0)));
                panel.add(cancelButton);
                panel.add(Box.createRigidArea(new Dimension(8,0)));
                panel.add(applyButton);
                dialogPanel.add(panel);
                dialog.setContentPane(dialogPanel);
                dialog.pack();
                dialog.setVisible(true);
            }
        }
        
        class ScreenShotAction extends AbstractAction {
                    
            public void actionPerformed(ActionEvent e) {
                if (getRenderer().isInitialized())
                    getRenderer().takeScreenShot();
            }
        }
        
        class RotateAction extends AbstractAction {
            private String rotationTarget = null;
            
            public RotateAction(String rotation) {
                this.rotationTarget = rotation;
            }
            
            public void actionPerformed(ActionEvent e) {
                if (rotationTarget.equalsIgnoreCase("X"))
                    ((ModelViewerRenderer)awtOGLCanvas.getRenderer()).rotateX();
                if (rotationTarget.equalsIgnoreCase("Y"))
                    ((ModelViewerRenderer)awtOGLCanvas.getRenderer()).rotateY();
                if (rotationTarget.equalsIgnoreCase("Z"))
                    ((ModelViewerRenderer)awtOGLCanvas.getRenderer()).rotateZ();
            }        
        }
        
        class TranslateAction extends AbstractAction {
            private String translateTarget = null;
            
            public TranslateAction(String translation) {
                this.translateTarget = translation;
            }
            
            public void actionPerformed(ActionEvent e) {
                if (translateTarget.equalsIgnoreCase("X"))
                    getRenderer().translateX();
                if (translateTarget.equalsIgnoreCase("Y"))
                    getRenderer().translateY();
                if (translateTarget.equalsIgnoreCase("Z"))
                    getRenderer().translateZ();
            }    
        }
        
        class RenderingAndAutoRotateAction implements ItemListener {
            private String renderingTarget = null;
            
            public RenderingAndAutoRotateAction(String rendering) {
                this.renderingTarget = rendering;
            }
            
            public void itemStateChanged(ItemEvent e) {
                final boolean active = e.getStateChange() == ItemEvent.SELECTED ? true : false;
                
                if (renderingTarget.equalsIgnoreCase("TEXTURE"))
                    getRenderer().setTexturing(active);
                if (renderingTarget.equalsIgnoreCase("LIGHT"))
                    getRenderer().setLighting(active);
                if (renderingTarget.equalsIgnoreCase("WIREFRAME"))
                    getRenderer().setWireframe(active);
                if (renderingTarget.equalsIgnoreCase("RESET") && active) {
                    reset();    // reset our GUI elements and the renderer                                
                    ((JCheckBox)e.getSource()).setSelected(false);
                }
                if (renderingTarget.equalsIgnoreCase("AUTO")) {
                    setAutoRotate(active);
                    getRenderer().setAutoRotate(active);
                }
                if (autoRot.isEnabled()) {
                    if (renderingTarget.equalsIgnoreCase("X"))
                        getRenderer().setAutoRotateX(active);
                    if (renderingTarget.equalsIgnoreCase("Y"))
                        getRenderer().setAutoRotateY(active);
                    if (renderingTarget.equalsIgnoreCase("Z"))
                        getRenderer().setAutoRotateZ(active);
                }
            }
        }
        
        class SliderAction implements ChangeListener {
            private String sliderTarget = "";
            private JTextField inputTarget = null;
            
            public SliderAction(String slider, JTextField input) {
                this.sliderTarget = slider;
                this.inputTarget = input;
            }
            
            public void stateChanged(ChangeEvent e) {
                final JSlider slider = (JSlider)e.getSource();
                
                if(!slider.getValueIsAdjusting()) {
                    final float speed = (float)slider.getValue()/10;                
                    // rotation speed
                    if (sliderTarget.equalsIgnoreCase("RX"))
                        getRenderer().setRotateXSpeed(speed);
                    if (sliderTarget.equalsIgnoreCase("RY"))
                        getRenderer().setRotateYSpeed(speed);
                    if (sliderTarget.equalsIgnoreCase("RZ"))
                        getRenderer().setRotateZSpeed(speed);
                    
                    // translation speed
                    if (sliderTarget.equalsIgnoreCase("TX"))
                        getRenderer().setTranslateXSpeed(speed);
                    if (sliderTarget.equalsIgnoreCase("TY"))
                        getRenderer().setTranslateYSpeed(speed);
                    if (sliderTarget.equalsIgnoreCase("TZ"))
                        getRenderer().setTranslateZSpeed(speed);
                    if (inputTarget != null)
                        inputTarget.setText(Float.toString((float)slider.getValue()/10));
                }            
            }
        }
        
        class SliderFieldAction extends AbstractAction {
            private JSlider sliderTarget = null;        
            private String renderTarget = "";
    
            public SliderFieldAction(JSlider slider, String render) {
                this.sliderTarget = slider;            
                this.renderTarget = render;
            }
            
            public void actionPerformed(ActionEvent e) {
                final JTextField field = (JTextField)e.getSource();
                
                if (field.getText() != null) {
                    try {
                        final int value = Integer.parseInt(field.getText().substring(0,field.getText().length() > 3 ? 3 : field.getText().length()));
                        applyToSlider(this.sliderTarget,value,10);
                        field.setText(Float.toString(value));
                        setRenderAction(this.renderTarget,value);
                    } catch (NumberFormatException nfe) {
                        field.setText("0");
                        setRenderAction(this.renderTarget,0);
                    }
                }
            }
            
            private void setRenderAction(String render, float value) {
                if (render.equalsIgnoreCase("TX"))
                    getRenderer().setTranslateXSpeed(value);
                if (render.equalsIgnoreCase("TY"))
                    getRenderer().setTranslateYSpeed(value);
                if (render.equalsIgnoreCase("TZ"))
                    getRenderer().setTranslateZSpeed(value);
                if (render.equalsIgnoreCase("RX"))
                    getRenderer().setRotateXSpeed(value);
                if (render.equalsIgnoreCase("RY"))
                    getRenderer().setRotateYSpeed(value);
                if (render.equalsIgnoreCase("RZ"))
                    getRenderer().setRotateZSpeed(value);
            }
            
            private void applyToSlider(JSlider slider, int value, int multiple) {
                if (value >= slider.getMaximum())
                    slider.setValue(slider.getMaximum());
                else if (value <= slider.getMinimum())
                    slider.setValue(slider.getMinimum());
                else slider.setValue(value*multiple);
            }        
        }
        
        class ShowAction extends AbstractAction {
            private String modelName = null;
            
            public ShowAction(String model) {
                this.modelName = model;
            }        
    
            public void actionPerformed(ActionEvent e) {           
                final ModelViewerRenderer renderer = getRenderer();
                // only load the model if the canvas that is used by the renderer
                // acknowlegded the renderer that its ready
                if (this.modelName != null && renderer.isInitialized()) {
                    // reset any modified controls
                    reset();
                    // reset the renderer just to be sure there is no old data rest
                    renderer.resetRenderer();
                    // set the modelFileName
                    renderer.setModelFileName(this.modelName);
                    // init the data
                    renderer.initScene();
                    // we got the data, now pre-render it
                    renderer.preRenderScene();
                    // everything is done, the model should now be displayed
                }
            }
            
        }
    }

  15. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    aber wieso soll ich in der main()-methode ein object erzeugen wenn ich durch statische methoden einfach den ablauf reinschreibe schlie&#223;lich verlagert sich wenn man ein objekt erzeugt der aufbau des programms einfach auf den konstruktor statt auf die main()-methode

    &#252;berhaupt konzentrier ich mich erstmal darauf das das programm l&#228;uft und wenn alles funzt guck ich mir den quelllcode n&#228;her an um ihn zu optimieren und platz zu sparen

    au&#223;erdem kommen in dem programm dann auch noch andere classen vor nur soweit bin ich noch nich gekommen die werd ich dann auch als objekt erzeugen und die methoden werden objectmethoden sein

    edit: obwohl stimmt du siehst die ganze sache von ner anderen perspektive stimmt wenn man eine klasse macht und alle methoden nicht statisch dann funktioniert das auch aber auf ein anderes prinzip
    alle objecte dich ich jetzt statische gemacht hab w&#228;ren objectvariablen also attribute und man k&#246;nnte sie &#252;ber das object ver&#228;ndern eigentlich eine gute idee werds mal versuchen umzuschreiben

    allerdings ist das eigentliche problem das mit dem string nicht gel&#246;st

    ach nochwas warum nimmst du bei import nicht einfach wildcards?

    &#228;hm und dein code erzeugt bei mir ich nehm netbeans aber mindestens 15 fehler:biggrin:

    Beitrag geändert: 18.10.2007 9:51:49 von reimann
  16. e********l

    @imports: Weil Wildcars un&#252;bersichtlicher sind. Die einzigen Wildcards die ich nutze sind w&#228;hrend der Entwicklung die der Statics. Wenn ich mit einer Klasse fertig bin lass ich Eclipse einmal die Importe organisieren.

    @min 15 Fehler: Nur ~15? H&#228;tte mit mehr gerechnet. Es fehlt zum einen meine Tools API und zum anderen die LWJGL API. Und halt andere referenzierende Klassen. Das k&#246;nnten die +15 Fehler sein. Type Erasures d&#252;rften keine drin sein, die lass ich von Eclipse immer als Warnung einblenden. Der Code ist eh von 2005 ^^'
    Und wenn du dich fragst wof&#252;r die GUI ist, hierf&#252;r: http://www.evil-devil.com/gfx/projects/bubble_engine_4.png

    @String: Das einfachste ist, wenn du einen Custom ComboboxRenderer schreibst. Wie das geht steht im JComboBox API Tutorial von SUN.

    @warum kein Static: Weil das nicht im Sinne von OOP ist. Vor allem da du sp&#228;ter noch weitere Klassen hinzuf&#252;gen willst, wird das dann zu einem Problem. Im Idealfall kapselt man die GUI von der Logik. So ist das bei dem Programm weitgehend gemacht.

    Bei interesse kann ich dir die App zuschicken.
  17. Autor dieses Themas

    reimann

    Kostenloser Webspace von reimann

    reimann hat kostenlosen Webspace.

    naja einmal gibst du deinen namen aus und da hast du deinen nick in "" geschrieben obwohl der string ja auch in "" ist deshalb h&#228;lt es deinen nick f&#252;r einen operator oder sonstiges also musste ich das in '' schreiben der rest ist wirklich nur ein typ von fehler das das programm eine klasse nicht findet

    achso ich hab mit basic und visual basic 6 angefangen zu proggen als mit prozedualer programmierung da ist der umstieg mir nich so leicht gefallen ich musste mir das prinzip von oop etwa 5 mal durchlesen bis ichs kapiert hab vor allem schnittstellen sind mir schwer gefallen

    und ich hab das ganze erstmal auf den konstruktor von jcombobox umgeschrieben allerdings muss ich mich dann eher oder sp&#228;ter in einer der sp&#228;teren versionen damit besch&#228;ftigen ich will jetzt blo&#223; endlich fertig werden und es ist nicht so schlimm
    ich wollte n&#228;mlich eigentlich die sprachdateien abfragen und damit m&#252;sste man sich nur neue sprachdateien runterladen f&#252;r das programm

    Beitrag geändert: 18.10.2007 13:48:52 von reimann
  18. e********l

    @nickfehler: Das ist nicht meine Schuld. Das hat das Forum verbockt. Denn ich Sourcecode hab ich das G&#228;nsef&#252;sschen escaped was hier entfernt wurde -.-

    @prozedualer programmierung: So schwer fand ich damals die Umstellung nicht. Einfach mit sehr vielen kleineren Programmen ge&#252;bt und recht viel Code angeschaut wie man das ein oder andere elegant l&#246;sen kann. Der Rest kommt mit der Zeit und der Erfahrung.

    @dein Programm: Das leichteste ist vielleicht einmal neu schreiben. Das ist in vielen F&#228;llen der schnellere Weg :)
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!