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
 

Michael...

Top Contributor
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.
 

Michoel

Aktives Mitglied
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
 

Michoel

Aktives Mitglied
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
 
G

Gast2

Gast
Der Netbean Code mit seinen eigenen LayoutManager macht des öfteren Probleme und vor allem kann ihn keiner gescheit Lesen.
 

Michoel

Aktives Mitglied
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
 

Michoel

Aktives Mitglied
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
 

Developer_X

Top Contributor
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:

Michoel

Aktives Mitglied
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 :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Automatische Scrollbalken bei einem JFrame AWT, Swing, JavaFX & SWT 8
D Scrollbalken in einem View AWT, Swing, JavaFX & SWT 2
J JTextpane einem Scrollbalken geben? AWT, Swing, JavaFX & SWT 2
C Scrollbalken bei einem JInternalFrame AWT, Swing, JavaFX & SWT 6
P Scrollbalken verschwinden beim Zoomen AWT, Swing, JavaFX & SWT 4
B Swing Problem: Horizontaler Scrollbalken in JComboBox hinzufügen AWT, Swing, JavaFX & SWT 4
M SWT Scrollbalken kommt zu spät AWT, Swing, JavaFX & SWT 5
A SWT Scrollbalken im Editorfenster erzwingen AWT, Swing, JavaFX & SWT 4
T Scrollbalken in JFrame AWT, Swing, JavaFX & SWT 8
C Swing Scrollbalken in JEditorPane - WIE? AWT, Swing, JavaFX & SWT 3
C JPanel mit FlowLayout in JScrollPane - keinen Scrollbalken AWT, Swing, JavaFX & SWT 2
B Swing JTable mit scrollbalken anhand von Spalten AWT, Swing, JavaFX & SWT 3
N Horizontale Scrollbalken in JTable AWT, Swing, JavaFX & SWT 2
R Scrollbalken für JFrame? AWT, Swing, JavaFX & SWT 2
C JTextArea zeigt keine Scrollbalken AWT, Swing, JavaFX & SWT 18
M Wie Scrollbalken links positionieren? AWT, Swing, JavaFX & SWT 14
A Scrollbalken von JScrollPane immer anzeigen AWT, Swing, JavaFX & SWT 2
G Scrollbalken SWT AWT, Swing, JavaFX & SWT 4
S 2D-Grafik beeinflussen durch Scrollbalken AWT, Swing, JavaFX & SWT 2
S JComboBox mit Scrollbalken AWT, Swing, JavaFX & SWT 2
D Scrollbalken zu langsam AWT, Swing, JavaFX & SWT 10
T Scrollbalken für ein Menü oder laufendes Dropdown-Menü wie? AWT, Swing, JavaFX & SWT 34
A 2 textareas, ein scrollbalken AWT, Swing, JavaFX & SWT 8
vogella JScrollPane - Position setzen der Scrollbalken AWT, Swing, JavaFX & SWT 5
H Dicke der Scrollbalken einer JScrollPane beeinflussbar? AWT, Swing, JavaFX & SWT 5
D Scrollbalken Wert setzen AWT, Swing, JavaFX & SWT 6
P In ein JScrollPane zeichnen und Scrollbalken anpassen AWT, Swing, JavaFX & SWT 13
T JScrollPane - ScrollBalken werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
S ScrollPane zeigt scrollbalken nicht an AWT, Swing, JavaFX & SWT 12
M Textfeld mit Scrollbalken AWT, Swing, JavaFX & SWT 5
T JScrollPane - Scrollbalken vermeiden AWT, Swing, JavaFX & SWT 5
S JTextArea - Vertikaler Scrollbalken AWT, Swing, JavaFX & SWT 4
sliwalker Swing: Scrollbalken scrollt den Inhalt einer JList nicht AWT, Swing, JavaFX & SWT 2
M Scrollbar: Scrollbalken versetzen AWT, Swing, JavaFX & SWT 2
L Horiz. Scrollbalken von JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben