ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
698
698
EMPFEHLEN
-
Als Quelle nutze ich Java ist eine Insel - aber das Buch hilft mir im Moment nicht weiter
gibts noch ande Bücher online - am besten für swing allein
Die Frage womit ich mich im Moment beschäftige sind:
wenn ich Netbeans unterandrem ein ScrollPane anlege wie schreibe ich da mit meinen Grafikfunctionen (die gut gehen wenn man nur ein fenster hat) rein ?
Code java:1 2 3 4 5 6 7 8 9 10 11 12
class DrawPanel extends JPanel { @Override protected void paintComponent( Graphics g ) { Graphics2D g2 = (Graphics2D) g; super.paintComponent( g ); this.zeichneNotenzeile(g); }
das ist was ich habe und was geht (gekürzt da es nur um den Aufruf geht)
wenn ich eine ScrollPane anlege bekomme ich nur den Code von NetBeans erstellt:
private javax.swing.JScrollPane jScrollPane2;
da fehlt doch ne Function ... wie bei den Listenern z.B. die ich erweitern kann mit meinem Code zum Zeichnen.
zusatzfrage: ich mach zwar eine Scroll Pane um mir nur ein ausschnitt anzeigen zulassen aber wie definiere ich die grösse vom fenster dahinter ?
also scroll fenster ist 400 * 300 aber das fenster in dem ich zeichne soll dann 800 * 300 sein
zusätzlich versuche ich im Moment zu verstehen wie man ein extra Fenster aufmacht - es gibt ein Demo mit AboutBox das über ein Jmenu eintrag geöffnet wird, Noch verstehe ich das nicht. vorallem weil den Code der NetBeans mir anlegt wenn ich ein zusätzliches Item anlege und dazu ein set Acton erstelle, der erzeugte Code anders aus sieht wie der vorgegebene Demo Code
Geändert von melmager (02.11.11 um 18:42 Uhr)
-
Hallo melmager,
auf nen JPanel kann man auf jeden Fall zeichnen, wenn das der Inhalt deines JScrollPanes werden sonn, übergiebst du das JPanel-Objekt an Kobnstuktor deines JScrollPanes.
Am besten setzt man größen mit setPrefferedSize(x, y).
www.javabuch.de dreht sich zwar nicht nur um Swing, ist aber das zweite bekannte Online-Book.
Mit der gebundenen Version habe ich - abgesehen von Onlne-Tutorials und learning by doing - Java gelernt.
Wenn das zweite Fenster ne art dialo sein soll währe der Code z.B. folgender:
Code java:1 2 3 4 5 6
Object[] nachricht = {"Ein Fehler ist aufgetreten!"}; Object[] optionen = {"OK"}; final JOptionPane optionPane = new JOptionPane(nachricht, JOptionPane.ERROR_MESSAGE, JOptionPane.OK_OPTION, null, optionen, optionen[0]); JDialog dialog = optionPane.createDialog(deinJFrameObjekt, "Fehler"); dialog.pack(); dialog.show();
Für ein gleichberechtigtes Fenster:
Vielleicht intessiert dich ja auch meine Swing-FAQ (Link in der Signatur)...
GrußGeändert von javaDeveloper2011 (02.11.11 um 19:18 Uhr) Grund: Code war zuvor falsch angepasst
-
Ich bekomms nicht gebacken
Code java:1 2 3 4 5
jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane2.setBackground(resourceMap.getColor("jScrollPane2.background")); // NOI18N jScrollPane2.setName("jScrollPane2"); // NOI18N
da wird der scrollPane erzeugt
und danach der Jpanel
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14
jPanelgfx = new javax.swing.JPanel(); jPanelgfx.setBackground(resourceMap.getColor("jPanelgfx.background")); // NOI18N jPanelgfx.setName("jPanelgfx"); // NOI18N // Code of sub-components - not shown here // Layout setup code - not shown here jScrollPane2.setViewportView(jPanelgfx); // folgende Zeilen habe ich eingebaut jPanelgfx.add(new jcPanelgfx()); jPanelgfx.setVisible( true );
und dat ist die classe
Code java:1 2 3 4 5 6 7 8
class jcPanelgfx extends javax.swing.JPanel { @Override protected void paintComponent( java.awt.Graphics g ) { java.awt.Graphics2D g2 = (java.awt.Graphics2D) g; super.paintComponent( g ); g.drawLine(30, 30, 100, 100); } }
nur zeichen tut er nixGeändert von melmager (04.11.11 um 21:21 Uhr)
-
Hallo,
= JScrollPane?scroll fenster ist 400 * 300
(oder doch JFrame?)
= JPanel?fenster in dem ich zeichne soll dann 800 * 300
Der NetBeans-GUI-Designer produziet leider teilweise unleserlichen und zeigt unvollständigen Code, deshalb hier einfach mal ein funktionierender Code der denke ich das tut was du willst:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
import javax.swing.*; import java.awt.*; public class Demo { public static void main(String[] args){ try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception ex){ } JFrame win = new JFrame("Demo"); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Neuer Code YourPanel panel = new YourPanel(); panel.setPreferredSize(new Dimension(800, 300)); JScrollPane sp = new JScrollPane(panel); sp.setPreferredSize(new Dimension(400, 300)); win.add(sp); // win.pack(); win.setVisible(true); } } // Dein Code class YourPanel extends JPanel { @Override protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; super.paintComponent(g); g.drawLine(30, 30, 100, 100); } } //
-
Danke für den Code aber ich habe was functoniernes gehabt was auf ein normalen JFrame läuft - es ging tatsächlich drum das in ein bestehendes Projekt, das mit NetBeans erstellt wurde, einzubauen.
ich bin schon mal ein schritt weiter
wenn ich in einem listener der auf ein Button reagiert den Code einbaue habe ich meinen Strich auf dem Bildschirm.
Code java:1 2 3 4 5 6 7 8 9
private void jButtonMidiPortActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: update Midi Devicelist in jComboMidi java.awt.Graphics g = jScrollPane2.getGraphics(); java.awt.Graphics2D g2 = (java.awt.Graphics2D) g; g2.drawLine(20, 20, 100, 100); jPanelgfx.paintComponents(g2); // weiterer Code }
-
Also zeichen tut er aber es gibt 2 Probleme:
A) der Scrollpane merkt nicht das das Gezeichnete grösser ist wie dat Fenster und blendet daher nicht die Balken ein zum verschieben des Ausschnitts
B) wenn ich das gesamte Fenster der Anwendung die Grösse verändere verschwindet dat gezeichnete - müsste daran liege das PaintCompenents nicht überlagert ist - behaupte ich mal
Ideen ?Geändert von melmager (05.11.11 um 16:47 Uhr)
-
Wenn du dem JPanel gleich am Anfang ne prefferedSize giebst, müsste der JScrollPane das merken.
Ohne sich anfangs auf eine Größe festzulegen, gehts denke ich nicht.
Ist es besonders wichtig, dass der JFrame skalierbar ist, ansonsten einfach:
Code java:1
jFrame.setResizable(false);
-
Ich habe da ne Kurzanleitung im Netz gefunden -
jetz mal eine generelle Frage ist die JscrollPane das übergeordnete Fensten und darunter ist dann das JPanel
so habe ich es gemacht oder ist das umgekehrt wie in dem Beispiel das ich gefunden haben ?
und ich denke ich muss mit setsize arbeiten um die grösse anzupassen - fragt sich nur wie
Nachtrag:
ich probiere im moment mehrer Varianten durch
kann es sein das ich die grösse eines Jpanels nicht nachträglich ändern kann ?
aber wozu habe ich dann setsize ?Geändert von melmager (06.11.11 um 21:22 Uhr)
-
Hi,
Meine Erfahrung: IMMER setPreferredSize()
JPanel soll und ist IM JScrollPane.jetz mal eine generelle Frage ist die JscrollPane das übergeordnete Fensten und darunter ist dann das JPanel
Gruß
-
Also jetzt habe ich was worauf ich aufbauen kann.
jPanel1.setPreferredSize(blattgfx);
geht
Also nochmal die Kurzform wie es geht ein Fenster in Net Beans zu erstellen in das man zeichen kann:
1)erstelle ein Jpanel
2)dann in der design ansicht von NetBeans im Navigator Fenster sagen "enclosure in JScrollPane"
3)erstelle eine classe
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
public class NotenBlatt extends JPanel { ZeichneNote blattgfx = new ZeichneNote(); @Override protected void paintComponent( Graphics g ) { Graphics2D g2 = (Graphics2D) g; super.paintComponent( g ); // hier wird gezeichnet } }
4) im Jpanel "Cutomize Code" anwählen und dort -jPanel1 = new NotenBlatt();- eingeben - den default Code entsprechend abändern
5) dann kann nach dem Zeichnen die Fenstergrösse mit -JPanel1.setPreferredSize- die grösse verändert werden die Scrollbalken werden entsprechend angepasst
ergebniss siehe unten - das unterste fenster mit den NotenlinieGeändert von melmager (12.11.11 um 14:32 Uhr)
-
-
Also erst die neue Grösse setzen über ne Dimesion
dann die neue Grösse an das JPanel übergeben und denn den ViewPort des ScrollPanels aufrufen
dann für ein repaint sorgen und fertig ist die neue Ansicht
Code java:1 2 3 4
blattdim.width = 17 * 4 * x + 50; // neue Breite jPanelBlatt.setPreferredSize(blattdim); // neu grösse setzen jScrollPaneBlatt.setViewportView(jPanelBlatt); // aufruf um die Scrollbalken an die neue grösse vom JPanel anzupassen
Ähnliche Themen
-
ScrollPane 2 lässt ScrollPane 1 verschwinden
Von hinotenshi im Forum Flash PlattformAntworten: 1Letzter Beitrag: 31.01.10, 15:50 -
Anzeige der Anzahl von Zeichen in Eingabefeld + wenn Sonderz. dann 2 Zeichen zählen
Von dwex im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 23.01.09, 11:00 -
2d Grafiken auf dem Handy zeichen
Von UmberHons im Forum JavaAntworten: 2Letzter Beitrag: 01.04.08, 20:19 -
Scrollpane
Von mischdrx im Forum Flash PlattformAntworten: 0Letzter Beitrag: 30.11.06, 19:21 -
[HELP] gbook - bb code + ersetzen von zeichen durch grafiken
Von phpMars im Forum PHPAntworten: 20Letzter Beitrag: 09.03.04, 09:46





Zitieren
Login





