internalframe problem

saladin100

Mitglied
Hallo zusammen,
schaut euch folgenden Quellcode an:
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;

public class Drawing extends JComponent {

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		super.setPreferredSize(new Dimension(300, 300));
		Graphics2D g2d = (Graphics2D) g;
		g2d.setColor(Color.red);
		g2d.drawImage(null, 0, 0, getWidth(), getHeight(), null);
		g2d.drawLine(50, 0, 50, getHeight() - 1);
		g2d.drawLine(getWidth(), 174 - 50, 0, 174 - 50);
		setPreferredSize(new Dimension(100, 100));
		repaint();
		
	}
}

Java:
import java.awt.Button;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JSlider;

public class FensterFuerBilddaten extends JInternalFrame {

	private JSlider horizontal = new JSlider(JSlider.HORIZONTAL);
	private JSlider vertikal = new JSlider(JSlider.VERTICAL);
	private Button btClose;

	public FensterFuerBilddaten() {
		super("Fenster", true, true, true, true);
		setSize(300, 300);
		setLocation(100, 100);
		JScrollPane scrollpane = new JScrollPane(new Drawing());

		scrollpane.setRowHeaderView(vertikal);
		scrollpane.setColumnHeaderView(horizontal);
		setContentPane(scrollpane);

		setVisible(true);
	}

}

Java:
import javax.swing.JDesktopPane;
import javax.swing.JFrame;

public class MainFrame extends JFrame {
	
	public MainFrame()
	{
		super("hauptfenster");
		setContentPane(new JDesktopPane());
		setSize(500,500);
		add(new FensterFuerBilddaten());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args)
	{
		new MainFrame();
	}

}


ich sitze jetzt schon ziemlich lange an dem Versuch, die zwei roten Linien so zu programmieren, dass sie sich proportional zur Größe des gesamten internalframes verhalten. D.h. wenn ich das internalframe größer oder kleiner mache, sollen die roten Linien sich im geichen Verhältnis mitbewegen. In das internalframe soll nachher ein Bild geladen werden. Die zwei roten Linien dienen dabei als Fadenkreuz. Jedes Mal wenn ich das internalframe vergrößere oder verkleinere, stimmt die Position des Fadenkreuzes nicht mehr. Ich weiß einfach nicht, wie ich das ganze bauen soll. Hat jemand eine Idee?
MFG Saladin

P.S.: :lol: <-- cooler Smiley oder?
 
Wenn dein Fadenkreuz in der Mitte sein soll, musst du es auch in der Mitte zeichnen und nicht auf den Punkt 50,50. Mehr oder weniger Pseudocode:
Java:
Rectangle2D clip=g2d.getClipBounds();
int centerX=clip.getCenterX();
int centerY=clip.getCentery();

g2d.drawLine(centerX,centerY-25,centerX,centerY+25);
g2d.drawLine(?,?,?,?);//Selber überlegen
 
Das Fadenkreuz soll doch gar nicht in die Mitte. Die Position des Fadenkreuzes wird nachher über die Solider geregelt.. aber darum geht's doch gar nicht.... es geht nur darum, dass die Linien sich proportional zur Größe des internalframes verhalten sollen....
 
Das ist das gleiche. Die Mitte des Frames ändert sich proportional zur Fenstergröße. Wenn du aber konstante Werte eingibst passt sich da nunmal nix an.
 

Zurück
Oben