2D-Grafik Scrollbarer Bereich

fastjack

Top Contributor
Ich habe ein Graphics-Objekt, das meinen Screen darstellt und möchte einen festen Bereich davon für Textausgaben scrollbar machen. Hat jemand Ideen dazu?
 
S

SlaterB

Gast
wenn du fertige GUI-Mittel wie JScrollPane nutzen willst, dann hast du in jedem Fall getrennte Bereiche, die einzeln zu bemalen sind,
wobei dafür immer noch gemeinsame Hintergrundressourcen genutzt werden können

oder hast du wirklich nur eine komplette Fläche, von einem Graphics-Objekt kontrolliert?
und willst du die ScrollBar oder ähnliches manuell zeichnen? dann musst du die Zeichenfläche letztlich auch auftrennen,
und sei es nur virtuell, den 'festen Bereich' festlegen, dort eben Text malen, woanders anderes

suchst du dafür Beispiele? die ich allerdings nicht nennen könnte
 

fastjack

Top Contributor
Danke. Ich habe nur eine Zeichenfläche, 640*480 Bildpunkte und nur ein Graphics-Objekt an der Stelle, wo ich eingreifen kann. Ich habe mir jetzt eine Art Nachrichtenstore geschrieben, der immer X-Nachrichten enthält. Kommt eine hinzu und sind X-Nachrichten überschritten, wird die erste gelöscht usw. Danach wird der Store in das Graphics-Objekt an die bestimmte Stelle ausgegeben. Das funktioniert ganz gut.
 

André Uhres

Top Contributor
Hallo fastjack,

versuch's mal so:

Java:
import java.awt.*;
import javax.swing.*;

public class PaintDemo {

    private final JFrame window;

    public PaintDemo() {
        window = new JFrame("PaintDemo");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(280, 300);
        window.setLocationRelativeTo(null);
        window.add(new DrawingArea());
        window.setVisible(true);
    }

    public static void main(final String... args) {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        } catch (Exception ex) {
        }
        UIManager.put("ScrollBar.thumb", new Color(130, 130, 130, 80));
        UIManager.put("ScrollBar.thumbShadow", new Color(130, 130, 130, 80));
        UIManager.put("ScrollBar.thumbHighlight", new Color(130, 130, 130, 80));
        UIManager.put("ScrollBar.track", new Color(0, 0, 0, 0));
        Runnable gui = new Runnable() {

            public void run() {
                PaintDemo paintDemo = new PaintDemo();
            }
        };
        SwingUtilities.invokeLater(gui);
    }

    private class DrawingArea extends JComponent {

        public DrawingArea() {
            add(textbox("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n", 100, 90, 60, 100));
        }

        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setColor(Color.LIGHT_GRAY);
            g2.fillOval(80, 10, 100, 250);
            g2.setColor(Color.ORANGE);
            g2.fillOval(10, 60, 250, 100);
        }

        private JScrollPane textbox(final String text, final int x, final int y,
                final int width, final int height) {
            JTextArea textarea = new JTextArea(text);
            JScrollPane scroller = new JScrollPane(textarea);
            scroller.setBounds(x, y, width, height);
            //make transparent:
            scroller.getHorizontalScrollBar().setOpaque(false);
            scroller.getVerticalScrollBar().setOpaque(false);
            Component[] c = scroller.getHorizontalScrollBar().getComponents();
            for (int i = 0; i < c.length; i++) {
                JButton component = (JButton) c[i];
                component.setOpaque(false);
            }
            c = scroller.getVerticalScrollBar().getComponents();
            for (int i = 0; i < c.length; i++) {
                JButton component = (JButton) c[i];
                component.setOpaque(false);
            }
            textarea.setOpaque(false);
            scroller.getViewport().setOpaque(false);
            scroller.setOpaque(false);
            //
            return scroller;
        }
    }
}

Gruß,
André
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M ScreenCapture bestimmten Bereich bestimmen AWT, Swing, JavaFX & SWT 3
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
S Bestimmten Bereich eines Bildes im JFrame mit Scrollpane anzeigen AWT, Swing, JavaFX & SWT 0
B 2D-Grafik String drehen/platzieren/formatieren in bestimmten Bereich AWT, Swing, JavaFX & SWT 1
K JavaFX Vorschau Bereich/Fenster einer bestehenden Group AWT, Swing, JavaFX & SWT 3
D Graphics2D einen Bereich füllen AWT, Swing, JavaFX & SWT 1
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
B 2D-Grafik paintComponent für rechteckigen Bereich? AWT, Swing, JavaFX & SWT 6
G LayoutManager BorderLayout WEST Bereich auf maximale Größe beschränken AWT, Swing, JavaFX & SWT 19
S Bestimmen ob Bereich im Bild eher Schwarz oder Weiss ist? AWT, Swing, JavaFX & SWT 13
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
R JTable nur sichtbaren Bereich laden AWT, Swing, JavaFX & SWT 12
L Koordinate im sichtbaren Bereich AWT, Swing, JavaFX & SWT 5
R JPanel - zeichnen in skalierten Bereich - Linie (X-Achse) nicht sichtbar AWT, Swing, JavaFX & SWT 11
R Swing JPanel Scala - sichtbarer Bereich "schattieren" AWT, Swing, JavaFX & SWT 2
G Komponente die im Center und North Bereich liegt zurückgebe? AWT, Swing, JavaFX & SWT 6
S Aufklappbarer Bereich AWT, Swing, JavaFX & SWT 2
V Fixer Bereich bei JScrollPane? AWT, Swing, JavaFX & SWT 2
T BufferedImage + bestimmten bereich ausfüllen AWT, Swing, JavaFX & SWT 3
C Image in bestimmtem Bereich anzeigen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben