Brauche Hilfe beim Steuern des Sichtbereiches eines JPanel

Status
Nicht offen für weitere Antworten.

Vitus

Mitglied
Hallo,

ich habe ein JPanel sim, in dem ich die paintComponent()-Methode überschrieben habe, um hierin zu zeichnen. Diese JPanel habe ich ein JScrollPane scrollsim zugeordnet, um das Scrollen zu ermöglichen. Dies funktioniert problemlos.

Jetzt meine Frage: Wie kann ich ohne die Scrollbars den Sichtbereich dieses JPanels ändern? Ich möchte gerne über ein extra Fenster (bspw.) einen bestimmten Punkt anvisieren, als hätte ich selbst hingescrollt.

Vielen Dank,
Vitus
 

Vatar

Bekanntes Mitglied
Also bei mir funktioniert das mit dem JPanel und der JScrollPane nicht. Ich habe eine Klasse PrintSetup die von JDialog erbt. Der ContentPane wird eine JScrollPane hinzugefügt und diese ScrollPane enhällt ein Object meiner lokalen Klasse "Preview" welche von JPanel erbt.

Code:
public class PrintSetup extends JDialog implements ItemListener, ActionListener
{
    final static JLabel label = new JLabel ("Welche Daten des Fahrzeugs sollen gedruckt werden?");
    final static JButton print_button = new JButton ("Drucken");
    final static JCheckBox oil_check = new JCheckBox ("Öl-Tabelle", true);
    final static JCheckBox parts_check = new JCheckBox ("Teile-Tabelle", true);
    final static JCheckBox tüv_check = new JCheckBox ("TÜV-Tabelle", true);
    
    // Vorschau-Panel erzeugen
    Preview preview = new Preview ();
    
    final static BasicStroke finestroke = new BasicStroke(1.0f);
    final static BasicStroke stroke = new BasicStroke(2.0f);
    final static BasicStroke wideStroke = new BasicStroke(8.0f);
    
    final static Color BACKGROUND 	= Color.white;
    final static Color FOREGROUND 	= Color.black;
    final static Color VEHICLE_TABLE= Color.gray;
    final static Color TABLE		= Color.black;
    final static Color ROW_HEADER 	= Color.lightGray; 
    final static Color ROW_BLUE 	= new Color(79, 167, 249);		// leichtes Blau
    final static Color ROW_GREY 	= new Color(230, 230, 230);
    final static Color WHITE 		= Color.white;
    
    final static Font VEHICLE_TABLE_FONT 	= new Font("Arial", Font.BOLD, 12);
    final static Font TABLE_HEADER_FONT 	= new Font("Arial", Font.BOLD, 10);
    
    private JTable vehicleTable;
    private JTable oilTable;
    private JTable partTable;
    private JTable tüvTable;
    
    
    public PrintSetup(JFrame owner, String title, boolean modal, Vector data)
    {
        super(owner, title, modal);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        
        this.vehicleTable 	= (VehicleTable)data.elementAt(0);
        this.oilTable 		= (OilTable)data.elementAt(1);
        this.partTable 		= (PartTable)data.elementAt(2);
        this.tüvTable 		= (TÜV_Table)data.elementAt(3);
                       
        getContentPane().setLayout(null);
        setSize(600, 500);
        setResizable(false);
        
        label.setBounds			( 30, 10, 300,  50);
        oil_check.setBounds		( 30, 60, 100,  30);
        parts_check.setBounds	(150, 60, 100,  30);
        tüv_check.setBounds		(270, 60, 100,  30);
        print_button.setBounds	(400, 60, 100,  30);
        oil_check.addItemListener(this);
        parts_check.addItemListener(this);
        tüv_check.addItemListener(this);
        print_button.addActionListener(this);
        
        
        
        JScrollPane scrollPane = new JScrollPane(preview);
        scrollPane.setBounds(0, 100, 600, 400);
        scrollPane.createVerticalScrollBar();
        
        
        getContentPane().add(label);
        getContentPane().add(oil_check);
        getContentPane().add(parts_check);
        getContentPane().add(tüv_check);
        getContentPane().add(scrollPane);
        getContentPane().add(print_button); 
    }// end constructor
    
    
    /**
     * Wenn eine CheckBox geändert wird wird sofort die paintComponent-
     * Methode des Preview-Panels aufgerufen.
     */
    public void itemStateChanged(ItemEvent e)
    {
        preview.paintComponent((Graphics2D)preview.getGraphics());
    }// endmethod
    
    
    
    public void actionPerformed(ActionEvent e)
    {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        printJob.setPrintable(preview);
        if (printJob.printDialog()) {
            try {
                printJob.print();  
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }// endmethod
    
    
    
    private class Preview extends JPanel implements Printable
    {
        public Preview ()
        {
            setBackground(BACKGROUND);
            setSize(600, 800);
        }// end constructor
        
	    /**
	     * überschrieben
	     * @see JComponent#paintComponent(java.awt.Graphics)
	     */
        public void paintComponent(Graphics g)
	    {
	        super.paintComponent(g);
	        // Aufruf von printing mit explizitem Cast
	        printing((Graphics2D)g);
	    }// endmethod
	    
	    
	   
	    
	    
	    /**
	     * Es wird ein Dialog zum Einstellen des Druckers angezeigt, danach
	     * wird das Preview-Panel gedruckt. 
	     */
	    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)throws PrinterException
	    {
	        if (pageIndex >= 1) {
	            return Printable.NO_SUCH_PAGE;
	        }
	        printing((Graphics2D)graphics);
	        return Printable.PAGE_EXISTS;
	    }// endmethod
	    
	    
	    
	    /**
	     * Diese Methode wird von der überschriebene paintComponents-Methode und auch von 
	     * der print-Methode aufgerufen. 
	     * @param g2 Übergebenes Graphics2D-Object
	     */
	    public void printing(Graphics2D g2)
	    {
	        int ySpace = 250;
	        
	        
	        // Zeichnen der Tabelle für die Fahrzeugdaten
	        g2.setPaint(VEHICLE_TABLE);
	        g2.setStroke(stroke);
	        // Zeile 1
	        g2.drawRect( 50,  50, 150, 35);
	        g2.drawRect(200,  50, 300, 35);
	        // Zeile 2
	        g2.drawRect( 50,  85, 150, 35);
	        g2.drawRect(200,  85, 300, 35);
	        // Zeile 3
	        g2.drawRect( 50, 120, 150, 35);
	        g2.drawRect(200, 120, 300, 35);
	        // Zeile 4
	        g2.drawRect( 50, 155, 150, 35);
	        g2.drawRect(200, 155, 300, 35);
	        
	        
	        // Ausmalen der 1. und 3. Zeile
	        g2.setPaint(ROW_BLUE);
	        // Zeile 1
	        g2.fill(new Rectangle( 51,  51, 148, 33));
	        g2.fill(new Rectangle(201,  51, 298, 33));
	        // Zeile 3
	        g2.fill(new Rectangle( 51, 121, 148, 33));
	        g2.fill(new Rectangle(201, 121, 298, 33));
	        
	        
	        // Zeichnen des Textes der Fahrzeugtabelle
	        g2.setPaint(FOREGROUND);
	        g2.setFont(VEHICLE_TABLE_FONT);
	        g2.drawString("Hersteller",  55,  70);
	        g2.drawString((String)vehicleTable.getValueAt(0, 1), 205,  70);
	        g2.drawString("Kategorie",  55, 105);
	        g2.drawString((String)vehicleTable.getValueAt(0, 1), 205, 105);
	        g2.drawString("Typ",  55, 140);
	        g2.drawString((String)vehicleTable.getValueAt(2, 1), 205, 140);
	        g2.drawString("Fahrgestellnummer",  55, 175);
	        g2.drawString((String)vehicleTable.getValueAt(3, 1), 205, 175);
	        
	        
	        
	        
	        // Zeichnen der Öl-Tabelle
	        if(oil_check.isSelected())
	        {
	           ... bla bla bla
	        }// endmethod
	        
	        
	        
	        
	        
	        // Zeichnen der Teile-Tabelle	        
	        if(parts_check.isSelected())
	        {
	            g2.setStroke(finestroke);
	            
	            // Tabellenheader zeichnen
	            g2.setPaint(TABLE);
	            g2.drawRect( 70, ySpace, 250, 20);
	            g2.drawRect(320, ySpace, 250, 20);
	            g2.setPaint(ROW_HEADER);
	            g2.fill3DRect( 70, ySpace, 250, 20, true);
	            g2.fill3DRect(320, ySpace, 250, 20, true);
	            g2.setPaint(FOREGROUND);
	            g2.setFont(TABLE_HEADER_FONT);
	            g2.drawString("Teil", 75, ySpace+15);
	            g2.drawString("Nummer", 325, ySpace+15);
	            ySpace += 20;
	            
	            
	            // Tabelleninhalt zeichnen
	            for(int i=0; i<partTable.getRowCount(); i++)
	            {
	                if(i%2 == 0)
	                {
	                    g2.setPaint(TABLE);	                    
	                    g2.drawRect( 70, ySpace, 250, 20);
	                    g2.drawRect(320, ySpace, 250, 20);
	                    g2.setPaint(ROW_BLUE);
	                    g2.fill(new Rectangle( 70+1, ySpace, 250-1, 20));
	                    g2.fill(new Rectangle(320+1, ySpace, 250-1, 20));
	                    
	                    g2.setPaint(FOREGROUND);
	                    g2.drawString((String)partTable.getValueAt(i, 0),  75, ySpace + 15);
	                    g2.drawString((String)partTable.getValueAt(i, 1), 325, ySpace + 15);
	                }
	                else
	                {
	                    g2.setPaint(TABLE);	                    
	                    g2.drawRect( 70, ySpace, 250, 20);
	                    g2.drawRect(320, ySpace, 250, 20);
	                    	                    
	                    g2.setPaint(FOREGROUND);
	                    g2.drawString((String)partTable.getValueAt(i, 0),  75, ySpace + 15);
	                    g2.drawString((String)partTable.getValueAt(i, 1), 325, ySpace + 15);
	                }
	                ySpace += 20;
	            }// end for
	            
	            ySpace += 50;
	        }
	        
	        // Zeichnen der TÜV-Tabelle	        
	        if(tüv_check.isSelected())

	        {
	            
	        }  
	    }// endmethod
	}// end class Preview

}// endclass PrintSetup

Das mit dem Zeichnen funktioniert alles bestens, es werden aber keine ScrollBalken angezeigt, obwohl das JPanel größer ist als die JScrollPane
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Mein Kopf dreht sich... Brauche Hilfe beim GUI gestalten AWT, Swing, JavaFX & SWT 10
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
K Swing Brauche Hilfe AWT, Swing, JavaFX & SWT 6
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
J Brauche ganz dringend Hilfe!!! AWT, Swing, JavaFX & SWT 5
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
G Selbstprogrammierter Editor - brauche Hilfe AWT, Swing, JavaFX & SWT 5
M Brauche Hilfe zum Einbinden von eigener Schrfitart AWT, Swing, JavaFX & SWT 3
S Brauche Hilfe mit JFrame - NullPointerException AWT, Swing, JavaFX & SWT 7
K Ich brauche GridBagLayout Hilfe AWT, Swing, JavaFX & SWT 4
S Frame, brauche dringend hilfe AWT, Swing, JavaFX & SWT 4
N ProgressBar --> brauche Hilfe AWT, Swing, JavaFX & SWT 4
N Brauche Layout-Hilfe AWT, Swing, JavaFX & SWT 3
N Brauche Layout Hilfe AWT, Swing, JavaFX & SWT 9
Z Bei Problem mit Java Swing brauche dringende Hilfe AWT, Swing, JavaFX & SWT 3
W JavaFX CSS und Vererbung - ich brauche nochmal etwas Nachhilfe AWT, Swing, JavaFX & SWT 28
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
D Ambitioniertes Projekt - Brauche Stichworte AWT, Swing, JavaFX & SWT 4
D Swing Wozu brauche ich getContentPane()? AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
S Brauche genaustes Verstaendnis ueber JTextField AWT, Swing, JavaFX & SWT 3
W Brauche Swing-Experten AWT, Swing, JavaFX & SWT 4
P Welchen Listener brauche ich? AWT, Swing, JavaFX & SWT 7
G Welche Swing-Version brauche ich . AWT, Swing, JavaFX & SWT 6
S Wann brauche ich die prepareRenderer() Methode ? AWT, Swing, JavaFX & SWT 2
D Brauche einfachen HTML Editor AWT, Swing, JavaFX & SWT 2
M Ich habe Werte und Brauche Grafik! AWT, Swing, JavaFX & SWT 3
M Brauche nur den Pfad zum Speichern AWT, Swing, JavaFX & SWT 8
M Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads? AWT, Swing, JavaFX & SWT 2
O Brauche ich einen neuen Frame? AWT, Swing, JavaFX & SWT 2
D Zoom problem!!! (brauche screenshot...) plz help thx AWT, Swing, JavaFX & SWT 7
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
JavaBeginner22 Button Hilfe AWT, Swing, JavaFX & SWT 0
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
T Swing Hilfe - Selbst Informatik Lehrer konnte mir nicht weiter Helfen AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
A Swing TicTacToe-Bitte um Hilfe AWT, Swing, JavaFX & SWT 32
T Bitte um Hilfe AWT, Swing, JavaFX & SWT 2
T Hilfe bei Code AWT, Swing, JavaFX & SWT 2
S Hilfe bei Java Gui Anfänger AWT, Swing, JavaFX & SWT 5
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
T Hilfe was mus ich tun um das fertige JfxFenster zu sehen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
H Swing Hilfe bei GUI AWT, Swing, JavaFX & SWT 4
T HILFE wie lösche ich gezeichnetes per tastendruck AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
M Hilfe bei Performanceverbesserung AWT, Swing, JavaFX & SWT 34
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
M SwingWorker Hilfe! AWT, Swing, JavaFX & SWT 10
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
J LayoutManager Hilfe bei Wahl des Layouts AWT, Swing, JavaFX & SWT 9
F Hilfe beim ausschalten von Robot AWT, Swing, JavaFX & SWT 7
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
L Swing Hilfe bei JTabelModel gesucht AWT, Swing, JavaFX & SWT 4
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
K Hilfe bei Labels AWT, Swing, JavaFX & SWT 3
S Hilfe beim Lernprozess von java3d AWT, Swing, JavaFX & SWT 20
T JLayeredPanel - Hilfe AWT, Swing, JavaFX & SWT 7
C Swing Hilfe bei umsetzung eines Stundenplans. AWT, Swing, JavaFX & SWT 7
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
F Swing Syntaxhighlighting Hilfe AWT, Swing, JavaFX & SWT 5
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4
N Swing nach Fensterrand Action ausführen? HILFE AWT, Swing, JavaFX & SWT 7
R Hilfe bei Bachelorrabeit. Seitenvorschau AWT, Swing, JavaFX & SWT 7
G Swing Hilfe-Fenster erstellen AWT, Swing, JavaFX & SWT 20
E LayoutManager Hilfe ein GridbagLayout!! AWT, Swing, JavaFX & SWT 7
K GUI-Hilfe für Anfänger AWT, Swing, JavaFX & SWT 15
J Schulprojekt und braucht hilfe AWT, Swing, JavaFX & SWT 54
G Hilfe! Command Pattern an easy ImageViewer? AWT, Swing, JavaFX & SWT 13
radiac Hilfe bei GUI AWT, Swing, JavaFX & SWT 22
N Hilfe bei erstellen eines Bibliotheksprogrammes AWT, Swing, JavaFX & SWT 15
H Swing Jtable wird nicht angezeigt..hilfe!! AWT, Swing, JavaFX & SWT 16
M DRINGEND HILFE TextPane RECHTSBÜNDIG AWT, Swing, JavaFX & SWT 2
B Swing Hilfe zu JTextField AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben