Hallo zusammen,
ich habe ein Problem mit dem JScrollpane.
Ich verwende ein JFrame Rahmen mit der Größe 600*600. Das Layout des JFrames ist BorderLayout. Ich füge in dieses JFrame insgesamt drei JPanels:
- Ein JPanel an Position (0,0) mit size(100, 600)
- Ein JPanel an Position (100,0) mit size(500, 50)
- Das Hauptpanel MyPanel ist an Position (100,50) mit size(500,600)
Innerhalb von Rahmen will ich jetzt MyPanel an ein JScrollPane übergeben und in das MyPanel z.B. einen String an Position (20, 20) des MyPanels schreiben. Hier tritt dann auch das Problem auf, da der String an die Position (20,20) von Rahmen geschrieben wird.
Ich habe es schon jetzt mit setViewPort(MyPanel) versucht, was leider nicht funktioniert hat. Könnt ihr mir bitte weiterhelfen?
Anbei noch der Sourcecode:
Vielen Dank schon mal!
ich habe ein Problem mit dem JScrollpane.
Ich verwende ein JFrame Rahmen mit der Größe 600*600. Das Layout des JFrames ist BorderLayout. Ich füge in dieses JFrame insgesamt drei JPanels:
- Ein JPanel an Position (0,0) mit size(100, 600)
- Ein JPanel an Position (100,0) mit size(500, 50)
- Das Hauptpanel MyPanel ist an Position (100,50) mit size(500,600)
Innerhalb von Rahmen will ich jetzt MyPanel an ein JScrollPane übergeben und in das MyPanel z.B. einen String an Position (20, 20) des MyPanels schreiben. Hier tritt dann auch das Problem auf, da der String an die Position (20,20) von Rahmen geschrieben wird.
Ich habe es schon jetzt mit setViewPort(MyPanel) versucht, was leider nicht funktioniert hat. Könnt ihr mir bitte weiterhelfen?
Anbei noch der Sourcecode:
Java:
public class Rahmen extends JFrame {
public JPanel Button_Panel;
public JLabel patternLabel1;
public JPanel Selection_Panel;
public JPanel MyPanel;
public JScrollPane scrollpane;
Rahmen(){
//Deklaration der Parameter des Hauptfensters
super("Test");
this.setVisible(true);
this.setSize(600,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
//JPanel mit Labels wird eingefügt
Button_Panel=new JPanel();
Button_Panel.setVisible(true);
Button_Panel.setSize(500,50);
Button_Panel.setLocation(100,0);
Button_Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
patternLabel1 = new JLabel("Radius Stelle:");
patternLabel1.setFont(new Font("Arial", Font.PLAIN, 12));
Button_Panel.add(patternLabel1);
this.add(Button_Panel);
//JPanel mit verschiedenen Auswahlmöglichkeiten (aus Platzgründen nicht dargestellt)
Selection_Panel=new JPanel();
Selection_Panel.setSize(100,500);
Selection_Panel.setLocation(0,0);
this.add(Selection_Panel);
//JPanel MyPanel als Hauptfenster
MyPanel=new JPanel();
add(MyPanel);
//Übergabe von MyPanel an Scrollpan
scrollpane = new JScrollPane();
scrollpane.setViewportView(MyPanel);
scrollpane.setPreferredSize(new Dimension(500,500));
this.add(scrollpane);
}
//Klasse MyPanel inklusive Methode paintComponent
class MyPanel extends JPanel{
MyPanel() {
setVisible(true);
setSize(500,500);
setLocation(0,0);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2D=(Graphics2D) g;
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2D.drawOval(100,100,150,150);
}
}
public static void main(String[] args) {
Rahmen rahmen=new Rahmen();
}
}
Vielen Dank schon mal!