![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 04.12.2001
Alter: 46
Beiträge: 266
|
![]() hi leute
ich habe probleme mit einen programm. und zwar schaffe ich es nicht scrollbalken in mein internalframe einzubinden. der graph ist aber eindeutig grösser als das scrollpane und somit sollten balken erzeugt werden. hier der code: Code:
package hilfe; import javax.swing.*; import java.sql.*; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; public class HauptFenster extends JFrame { public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new HauptFenster(); } public HauptFenster() { super("HILFE"); setSize(600, 300); setLocation(300, 300); JDesktopPane desk = new JDesktopPane(); this.getContentPane().add(desk); desk.setDesktopManager(new DefaultDesktopManager()); JInternalFrame jif = new JInternalFrame("GRAPH", true, true, true, true); jif.setSize(400,300); getContentPane().add(jif); jif.getContentPane().add(new JScrollPane(new JPanel(null, true).add(new Graph()))); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { System.exit(0); } }); jif.setVisible(true); setVisible(true); } } class Graph extends Component { public Graph() { } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; int[] data = null; int s = 0; int r = 0; try { Connection dbConn; Driver d = (Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); String URL = "jdbc:odbc:" + "CMSC446"; dbConn = DriverManager.getConnection(URL, "nouser", "nopassword"); System.out.println("db Connected...\n"); // Java SQL objects... Statement stmt; stmt = dbConn.createStatement(); ResultSet rs; rs = stmt.executeQuery("SELECT value FROM data WHERE dataid = 0"); while(rs.next()) { s++; } data = new int[s]; rs = stmt.executeQuery("SELECT value FROM data WHERE dataid = 0"); while(rs.next()) { data[r] = rs.getInt("value"); r++; } } catch (Exception e) { System.out.println("Read: " + e); } int x0 = 30; int y0 = 150; Shape xline = new Line2D.Double(x0,10,x0,170); Shape yline = new Line2D.Double(10,y0,590,y0); g2.setPaint(Color.blue); g2.draw(xline); g2.draw(yline); int x1 = 0; int x2 = 0; int y1 = 0; int y2 = 0; for(int z = 0 ; z < r-1 ; z++) { x1 = x0 + 1*z; x2 = x1 + 1; y1 = y0 - 1*(int)data[z]; y2 = y0 - 1*(int)data[z+1]; Shape linexy = new Line2D.Double(x1,y1,x2,y2); g2.setPaint(Color.red); g2.draw(linexy); y1 = 0; y2 = 0; } } } wäre echt dankbar. ich kämpfe nun schon seit tagen damit. danke im vorraus jopp |
![]() |
![]() |
![]() |
#2 |
Elite
![]() |
![]() hast du schon mal überlegt die policy auf ALWAYS zu setzen
JScrollPane.setHorizontalScrollBarPolicy(int) JScrollPane.setVerticalScrollBarPolicy(int) ich hab den code nur überflogen, hab grad net mehr zeit aber das is mal eine abhilfe für den moment
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 04.12.2001
Alter: 46
Beiträge: 266
|
![]() danke für deine antwort, und sorry, dass ich erst so spät antworte.
habe es geschafft. die scrollbalken werden jetzt angezeigt. aber schon hat sich das nächste problem ergeben. und zwar wird der graph anscheinend immer wieder neu gezeichnet oder so. am einfachsten erklären es wohl die bilder: erstes zeigt den graphen nach dem programmstart (es wurde noch nicht gescrollt) zweites bild zeigt den graphen nach dem gescrollt wurde also irgenwie scheint es mir, als würde das bild sehr oft neu gezeichnet werden, oder auch nur bestimmte bereiche. ich habe gehört/gelesen, dass hierzu eventuell mit bufferimage was machen kann. leider habe ich auch damit, noch keine erfahrung. wenn du dich damit auskennst, wäre es nennt wenn du mir kurz einen tip geben könntest. danke jopp |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 13.06.2001
Beiträge: 1.830
|
![]() Hab' leider von swing&awt wenig ahnung, vielleicht gehts aber so:
Ein image1 erstellen und in dieses Image die Pixel des Graphen hineinkopieren. Der Code stammt aus einem Delphi Programm, das ich vor ein paar Jahren geschrieben hab (zeichnet die Mandelbrotmenge). form1.image1.Canvas.copyrect(form1.ClientRect, form1.Canvas, form1.ClientRect); //Speicherung des Ergebnissbildes in Image1 Das Problem schaut ganz allgemein so aus, als ob er die Cursorposition "mitverschiebt"-vielleicht kannst du es also auch durch speichern der Cursorposition lösen. Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona) Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing. \"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra) |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 04.12.2001
Alter: 46
Beiträge: 266
|
![]() danke für deine antwort
das mit dem bild habe ich mir auch schon überlegt. da ich das mit dem scrollen auch von einem programm mit einem bild habe sollte das auf jeden fall funktionieren. einziges problem ist, dass ich keinen schimmer von bilderstellung mit java habe. werde mich mal schlau darüber machen und versuchen ein kleines test programm zu schreiben. auf jeden fall danke. jopp |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 04.12.2001
Alter: 46
Beiträge: 266
|
![]() problem gelöst
statt paint(Graphics g) einfach paintComponent(Graphics g) verwenden. und dann noch einmal super.paintComponent(g) aufrufen. damit funktioniert das ganze einwandfrei. warum? keine ahnung, ich habe irgendwo gelesen, das es besser ist die paintComponent methode zu verwenden. da die paint methode eigetnlich für awt ist und unter swing alles mögliche zusätzlich macht oder so. aber wurscht, es funktioiert. warum und weßhalb, damit kann man sich ja später auch noch beschäftigen. danke für die hilfe jopp |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|