Swing Scrollbalken in einem JFrame

Michoel

Aktives Mitglied
Hi,
irgendwie kriege ich einen Scrollbalken (ScrollPane und dann Scrollbar) in mein Panel eingefügt.


Ich habe ein Frame welches ein TabbedPane hat. Der Controller kann von außen dem Frame in die TabbedPane ein Panel zuweisen:


Code:
public void setPanels(JPanel panel, String pathPicture, String panelName) {
        ImageIcon icon=new ImageIcon(getClass().getResource("/netbeans_startup/resources/"+pathPicture));
        tabbedPane.addTab("", icon, panel, ""+panelName);
    }

Nun kann es aber vorkommen ,dass ein einegfügten Panel länger ist als das Frame, in der es in den TabbedPane geladen wurde.
Nun weiß ich nicht, ob ich den Scrollbar in die Frame legen kann oder in den Panel.

Mit Netbeans habe ich beides versucht, den ScrollPane reinzuziehen. Geht irgendwie nicht, entweder lädt er die ganze Frame nicht mehr oder meckert, falls ich den ScrollPane im Panel direkt einfüge, dass ich den Panel nicht adden kann.


Im Frame sah das etwa so aus:


Code:
jScrollBar1 = new javax.swing.JScrollBar();

jScrollBar1.setName("jScrollBar1"); // NOI18N

jScrollPane1.setViewportView(jScrollBar1);
jScrollPane1.setViewportView(tabbedPane.getComponentAt(0));
this.add(jScrollPane1);


Weiß garnicht, wie ich das realisieren soll

Grüße
 
Du musst um das Panel, das im TabbedPane eingefügt wird eine ScrollPane packen.
Java:
tabbedPane.addTab("", icon, new JScrollPane(panel), ""+panelName);
Die ScrollPane orientiert sich an der preferredSize des Panel ist diese grösser als die Grösse des Viewport werden die Scrollbars angezeigt. Dieses Verhalten kann man aber auch noch beeinflussen, siehe API Doku von Sun.
 
hi michael,
vielen vielen Dank für den Tipp. Ich komme schon dem Scrollbalken etwas näher. Nachdem ich dein Tipp befolgt habe, fügt er nun für alle Panels (die ich dem tabbedPane übergebe) ein Scrollbalken hinzu. Habe 3 Panels mal geaddet. Bei allen drei erscheint ein Scrollbalken, auch wenn bei 2 nichts hohes drin ist. Im dritten Panel habe ich sehr viel Text, da ist jedoch der Scrollbalken auch gleich hoch, also fehlt noch unten Text, was unten verschwindet.

Liegt das evtl. da dran, dass ich in dem dritten Panel mehrere Labels habe, welche ich mit HTML gefüttert habe?
Für tabbedPane habe ich ein prefferedSize, sowie auch für die Panels, die eingefügt werden. Ist das evtl. der Fehler?

Grüße
 
Hi,
der Code vom Panel sieht so aus:


Code:
package netbeans.views;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import netbeans.Controller;
import netbeans.models.User;
import netbeans.models.Project;
import netbeans.models.ProjectPlan;
import netbeans.utils.MessageResource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class PanelProjectplan extends javax.swing.JPanel {

    private Controller cont;
    private User user;
    private Project pr;
    private DefaultTableModel tableUserModel;
    private static Log log = LogFactory.getLog(PanelProjectplan.class);

    
    /** Creates new form PanelWorkitem */
    public PanelProjectplan(Controller cont, User us, Project pr) {
        this.cont=cont;
        this.user=us;
        this.pr=pr;
        initComponents();
        if(log.isDebugEnabled()) log.debug("Projectplan wurde erstellt");
    }


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        labelFailedMessageUser = new javax.swing.JLabel();
        titleUsermanagement = new javax.swing.JLabel();
        labelProjectname = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        contentIntroduction = new javax.swing.JLabel();
        labelProName = new javax.swing.JLabel();
        labelLessons = new javax.swing.JLabel();
        contentLessons = new javax.swing.JLabel();
        labelUser = new javax.swing.JLabel();
        labelObjectives = new javax.swing.JLabel();
        contentObjectives = new javax.swing.JLabel();
        contentUsersHeadline = new javax.swing.JLabel();
        buttonEditModus = new javax.swing.JButton();

        setBackground(new java.awt.Color(255, 255, 255));
        setPreferredSize(new java.awt.Dimension(581, 513));

        labelFailedMessageUser.setText("");
        labelFailedMessageUser.setName("labelFailedMessageUser"); // NOI18N

        titleUsermanagement.setFont(new java.awt.Font(cont.getProperties().getString("fontFamily"), 1, cont.getProperties().getInt("fontSizeMainmaskTitle")));
        titleUsermanagement.setText("Projectplan");
        titleUsermanagement.setName("Projectplan"); // NOI18N

        labelProjectname.setText(""+pr.getProjectName());
        labelProjectname.setName(""+pr.getProjectName());

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel1.setText("Introduction");
        jLabel1.setName("jLabel1"); // NOI18N

        contentIntroduction.setText("<html>"+pr.getProjectPlan().getIntroduction()+"</html>");
        contentIntroduction.setName(pr.getProjectPlan().getIntroduction());

        labelProName.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelProName.setText("Projectname");
        labelProName.setName("Projectname"); // NOI18N

        labelLessons.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelLessons.setText("Lessons Learned");
        labelLessons.setName("Lessons Learned"); // NOI18N

        contentLessons.setText("<html>"+pr.getProjectPlan().getLessonlearned()+"</html>");
        contentLessons.setName("contentLessons"); // NOI18N

        labelUser.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelUser.setText("Project organization");
        labelUser.setName("Project organization"); // NOI18N

        labelObjectives.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelObjectives.setText("Project milestones and objectives");
        labelObjectives.setName("Project milestones and objectives"); // NOI18N

        contentObjectives.setText("<html>"+pr.getProjectPlan().getObjectivesComment()+"</html>");
        contentObjectives.setName("contentObjectives"); // NOI18N

        contentUsersHeadline.setText("");
        contentUsersHeadline.setName("contentUsersHeadline"); // NOI18N

        buttonEditModus.setText("Edit Projectplan");
        buttonEditModus.setEnabled(false);
        buttonEditModus.setName("buttonEditModus"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelFailedMessageUser)
                    .addComponent(labelProName)
                    .addComponent(labelProjectname)
                    .addComponent(jLabel1)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(titleUsermanagement)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 400, Short.MAX_VALUE)
                        .addComponent(buttonEditModus))
                    .addComponent(contentIntroduction)
                    .addComponent(labelUser)
                    .addComponent(labelLessons)
                    .addComponent(contentLessons)
                    .addComponent(labelObjectives)
                    .addComponent(contentObjectives)
                    .addComponent(contentUsersHeadline))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(titleUsermanagement, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(buttonEditModus))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelFailedMessageUser)
                .addGap(28, 28, 28)
                .addComponent(labelProName)
                .addGap(8, 8, 8)
                .addComponent(labelProjectname)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contentIntroduction)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(labelUser)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contentUsersHeadline)
                .addGap(41, 41, 41)
                .addComponent(labelObjectives)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contentObjectives)
                .addGap(41, 41, 41)
                .addComponent(labelLessons)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contentLessons)
                .addContainerGap(155, Short.MAX_VALUE))
        );

        createOrganization(pr.getAllUser());
        buttonEditModus.setVisible(false);
        buttonEditModus.addActionListener(cont.getListener());
        buttonEditModus.setActionCommand("editProjectplan");
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton buttonEditModus;
    private javax.swing.JLabel contentIntroduction;
    private javax.swing.JLabel contentLessons;
    private javax.swing.JLabel contentObjectives;
    private javax.swing.JLabel contentUsersHeadline;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel labelFailedMessageUser;
    private javax.swing.JLabel labelLessons;
    private javax.swing.JLabel labelObjectives;
    private javax.swing.JLabel labelProName;
    private javax.swing.JLabel labelProjectname;
    private javax.swing.JLabel labelUser;
    private javax.swing.JLabel titleUsermanagement;
    // End of variables declaration                   



    private void createOrganization(Vector<User> us) {
        Vector<User> allUser =us;
        String bgColor="#ffffff";

        String header="<html><table border='0'><tr><td><table width='550' border='0'>" +
                "<tr>" +
                    "<td width=150></td>" +
                    "<td>Manager</td>" +
                    "<td>Analyst</td>" +
                    "<td>Architect</td>" +
                    "<td>Developer</td>" +
                    "<td>Tester</td>" +
                    "<td>Any Role</td>" +
                "</tr>";
        String userContent="";
        int i=0;

        while (i<allUser.size()) {
            String isPM="";
            String isAnal="";
            String isArch="";
            String isDev="";
            String isTester="";
            String isAny="";

            userContent=userContent+"<tr bgColor='"+bgColor+"'>" +
                    "<td>"+allUser.elementAt(i).getFirstname()+" "+allUser.elementAt(i).getLastname()+"</td>";

            int roleCheck=0;
            while(roleCheck<allUser.elementAt(i).getRoles().size()) {


                if(2==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isPM="X";
                } else if(3==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isAnal="X";
                } else if(4==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isArch="X";
                } else if(5==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isDev="X";
                } else if(6==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isTester="X";
                } else if(7==allUser.elementAt(i).getRoles().elementAt(roleCheck).getRoleID()) {
                    isAny="X";
                }
                roleCheck++;
            }

            userContent=userContent+"" +
                    "<td>"+isPM+"</td>" +
                    "<td>"+isAnal+"</td>" +
                    "<td>"+isArch+"</td>" +
                    "<td>"+isDev+"</td>" +
                    "<td>"+isTester+"</td>" +
                    "<td>"+isAny+"</td>" +
                "</tr>";

            if (bgColor.equals("#ffffff")) {
                bgColor="#f9efef";
            } else {
                bgColor="#ffffff";
            }

            i++;
        }
       
        contentUsersHeadline.setText(header+userContent+"</table></td></tr></html>");
    }


    public void setButtonEditVisibly(boolean vis) {
        buttonEditModus.setEnabled(vis);
        buttonEditModus.setVisible(vis);
    }


    public void setProject(Project pr) {
        this.pr=pr;
    }


    public Project getProhect() {
        return this.pr;
    }
}




Diesen Panel oben fügt dann der Controller in ein TabbedPane des Hauptframes.
Das Hauptframe sieht dann so aus:



Code:
package netbeans.views;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import netbeans.Controller;
import netbeans.models.User;
import netbeans.utils.*;
import netbeans.utils.MessageResource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class FrameMain extends javax.swing.JFrame {

    private Controller cont;
    private User user;
    private Vector<User> users;
    private DefaultTableModel tableUserModel;
    private static Log log = LogFactory.getLog(FrameLogin.class);


    /**
     * Der Konstruktor der Mainmaske
     * @param cont  Erwartet den Controller, um den Listener (den der Controller kennt) für Aktionen anzumelden
     */
    public FrameMain(Controller cont, User us, Vector<User> users) {
        this.cont=cont;
        this.user=us;
        this.users=users;
        initComponents();
        if(log.isDebugEnabled()) log.debug("Mainmaske wurde erstellt");
    }


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        tabbedPane = new javax.swing.JTabbedPane();
        menuBar = new javax.swing.JMenuBar();
        menuFile = new javax.swing.JMenu();
        menuFileClose = new javax.swing.JMenuItem();
        menuHelp = new javax.swing.JMenu();
        menuHelpAbout = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle(cont.getProperties().getString("title"));
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

        tabbedPane.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        tabbedPane.setName("tabbedPane"); // NOI18N
        tabbedPane.setPreferredSize(new java.awt.Dimension(586, 627));

        menuBar.setName("menuBar"); // NOI18N

        menuFile.setText(MessageResource.getMessage("form.file", cont.getLocale()));
        menuFile.setName(MessageResource.getMessage("form.file", cont.getLocale()));

        menuFileClose.setText(MessageResource.getMessage("form.close", cont.getLocale()));
        menuFileClose.setName(MessageResource.getMessage("form.close", cont.getLocale()));
        menuFile.add(menuFileClose);
        menuFileClose.addActionListener(cont.getListener());
        menuFileClose.setActionCommand("menuClose");

        menuBar.add(menuFile);

        menuHelp.setText(MessageResource.getMessage("form.help", cont.getLocale()));
        menuHelp.setName(MessageResource.getMessage("form.help", cont.getLocale()));

        menuHelpAbout.setText(MessageResource.getMessage("form.about", cont.getLocale()));
        menuHelpAbout.setName(MessageResource.getMessage("form.about", cont.getLocale()));
        menuHelp.add(menuHelpAbout);
        menuHelpAbout.addActionListener(cont.getListener());
        menuHelpAbout.setActionCommand("menuHelp");

        menuBar.add(menuHelp);

        setJMenuBar(menuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(tabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 586, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(tabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 627, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JMenu menuFile;
    private javax.swing.JMenuItem menuFileClose;
    private javax.swing.JMenu menuHelp;
    private javax.swing.JMenuItem menuHelpAbout;
    private javax.swing.JTabbedPane tabbedPane;
    // End of variables declaration                   
    

    public void setPanels(JPanel panel, String pathPicture, String panelName) {
        ImageIcon icon=new ImageIcon(getClass().getResource("/netbeans/resources/"+pathPicture));
        tabbedPane.addTab("", icon, panel, ""+panelName);
    }

    public void setSelectedIndex(PanelProjectplan p) {
        tabbedPane.setSelectedComponent(p);
    }
}



Ich weiß dass dieser Netbeans-Code etwas wüscht aussieht. Optimal wäre es, wenn nicht das Panel, sondern die Hauptmaske scrollt, falls ein Panel zu groß wird, aber das ist egal, hauptsache man kann scrollen.

Ich weiß garnicht, ob ich evtl. beim erstellen einer Maske/Panels/Dialogs evtl. ein Fehler mache.
Ich kann ja in Netbeans ein Panel erstellen und eine Größe angeben. Dann kann ich die Elemente platzieren. Bsp. Labels, Textfelder, Textareas. Wenn ich nun mehr Textfelder eingeben will, wächst gleich der ganze Panel oder das Dialog.

Grüße
 
Der Netbean Code mit seinen eigenen LayoutManager macht des öfteren Probleme und vor allem kann ihn keiner gescheit Lesen.
 
Das ScrollPane hatte ich beim einfügen vom Controller aus um den Panel herumgebastelt:


Code:
tabbedPane.addTab("", icon, new JScrollPane(panel), ""+panelName);




Ich muss naher auch ein Dialog erstellen. Da muss ich vermutlich dann um das ganze Dialog herum ein ScrollPane anlegen ne? Bzw. ich lege ein Dialog an mit einer bestimmten Große Bsp. 400,300px;
Lege einen Scrollpane in das Dialog rein.
Nun will ich aber Elemente reinlegen, welches 700px lang ist.
Ich mache dann einfach keine wachsende Elemente rein, sondern Textareas, die ihre eigenen Scrollpanes haben.
Würde zwar noch gerne mit Label etwas langes ausgeben wollen, da verzichte ich dann einfach drauf 😉

Grüße
 
guten abend,
also das mit dem scroll hab ich irgendwie so hin bekommen. (hab da mit den prefferedsizes des panels herumgespielt und nun geht es. Wenn ich da ein Maß vorgebe funktioniert es nicht. Nur wenn ich eine Standardwer (Bsp. 10, 10) eingebe, funktioniert das Scroll.


In den Labels habe ich HTML ausgegeben. Funktioniert auch ganz Toll. Ich gebe da eine schöne Tabelle aus.
Nun frage ich mich, ob ich bestimmte Stellen anklickbar machen kann, bzw. ob ich in HTML irgendwelche Buttons, oder JButtons oder Bilder anklickbar reinladen kann?

Will dann durch ein Klick ein neues Panel laden. ActionListener usw. sind kein Problem, nur weiß ich nicht, wie ich das anklickbar mache, da man den HTML-Text nicht markieren kann, bzw. irgendwie so drüberfahren.

Grüße
 
Java:
package main;

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*;

/**
 * 
 * @author Kevin Riehl
 *
 */

@SuppressWarnings("serial")
public class JEditorPane_Example extends JFrame
{
//	Attributes
	Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); // Bildschirmdaten erhalten
	JEditorPane browserArea;
	
//	Constructor
	public JEditorPane_Example()
	{
		super("Der kleine JavaBrowser"); // Titel des JFrame
		setSize(d.width/2,d.height/2);	// Größe des JFrame
		setLocation(d.width/4,d.height/4);	// Positioniert unser JFrame
		setLayout(new BorderLayout());	// Setzt das Layout für unser Hauptpanel
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Soll Programm beenden
														// Wenn das Fenster geschlossen wird.
		addComponents();
		
		setVisible(true);
	}
	
//	Constructor Methods
	/**
	 * Added alle Componente.
	 */
	public void addComponents()
	{
		addBrowserZeile(); // added die Browserzeile um die URL einzugeben
		addBrowserArea(); // added das Herzstück, die Browserfläche
	}
	/**
	 * Added die BrowserZeile.
	 */
	public void addBrowserZeile()
	{
		final JTextField browserZeile = new JTextField("Bitte hier eine URL eingeben."); //Erstellt unsere BrowserZeile
		browserZeile.setForeground(Color.gray);
		// Unsere Browserzeile soll schauen, falls du etwas anderes anklickst,
		// Aber immer noch keine URL eingegeben wurde, soll der Text
		// >>Bitte hier eine URL eingeben<< stehen.
		browserZeile.addFocusListener(new FocusListener()
		{
			public void focusGained(FocusEvent arg0)
			{
				browserZeile.setText("");
			}
			public void focusLost(FocusEvent arg0)
			{
				if(browserZeile.getText().equals("")||browserZeile.getText().equals(" "))
				{
					browserZeile.setText("Bitte hier eine URL eingeben.");
				}
			}
		});
		// Falls man >>ENTER<< drückt, soll die Website aufgerufen werden.
		browserZeile.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				goTo(browserZeile.getText());
			}
		});
	
		add(browserZeile,"North"); // Added die Browserzeile
	}
	/**
	 * Added die Browserfläche.
	 */
	public void addBrowserArea()
	{
   		browserArea = new JEditorPane();
   		browserArea.setEditable(false); 
   		// (Siehe oben) Man darf den Text nicht ändern, 
   		// wo kömen wir dahin, wenn wir den Text auf 
   		// jeder Website in unserem Browser ändern könnten^^.
   		
   		browserArea.addHyperlinkListener // Added die Funktion, Links anklicken zu können, 
   										 // um weitergeleitet zu werden
   		(new HyperlinkListener()
   		{
			  public void hyperlinkUpdate(HyperlinkEvent e) // Hier wird der Cursor 
			  												// wenn er über Links etc. fährt, geändert
			  {
				  if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) 
				  {
					  ((JEditorPane) e.getSource()).setCursor(Cursor.getPredefinedCursor( Cursor.HAND_CURSOR));
				  } 
				  else if (e.getEventType() ==  HyperlinkEvent.EventType.EXITED) 
				  {
					  ((JEditorPane) e.getSource()).setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
				  } 
				  else // Hier wird die Funktion des "Über Seiten Fliegens" eingebaut.
				  {
					  if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) 
					  {
						  JEditorPane pane = (JEditorPane) e.getSource(); 
						  if (e instanceof HTMLFrameHyperlinkEvent) 
						  {
							  HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
							  HTMLDocument doc = (HTMLDocument)pane.getDocument();
							  doc.processHTMLFrameHyperlinkEvent(evt);
						  } 
						  else 
						  {						 
							 try 
						  	 {
			                   // Normaler Link
			                   pane.setPage(e.getURL());
			                 } 
							 catch (Exception e2) 
			                 {
			                     e2.printStackTrace();
			                 }
						  }
					  }
				  }
			   }
			  });
   		add(new JScrollPane(browserArea),"Center"); // added die BrowserFläche
	}
	
//	Methods
	/**
	 * Geht auf die folgende URL.
	 */
	public void goTo(String url)
	{
		try 
		{
			browserArea.setPage(new URL("http://"+url));
		} 
		catch (Exception e)
		{
		}
	}

//	Main
	public static void main(String[]args)
	{
		new JEditorPane_Example();
	}
}

Schau dir mal mein kleines KSKB an.
Am Besten du startest es bei dir.
Siehst du?
Du kannst im Grunde alles machen was du willst.
Das Zauberwort (die Zauberklasse) ist das gute alte JEditorPane.

Ich hoffe ich konnte dir helfen, Developer_X

PS:
Dir sollte aber eines gesagt sein, Features, wie JavaScript oder Flash etc., sind hier nicht eingebaut.
Für soetwas, würde ich raten einen eigenen Browser mit Spracheninterpretation usw.. zu programmieren.
 
Zuletzt bearbeitet:
hey super, vielen Dank. Das ist ein echt gutes Beispiel 🙂
Die vorgegebene Zeit unseres Projekts ist nun abgelaufen. Ich teile euch dann mit, wenn wir die Noten erhalten. Eine Eins-Komma sollte es aber schon werden hoffentlich 🙂
 

Zurück
Oben