Hallo,
ich habe unteres Programm, welches auf einem JPanel, mittels Popup- Menü Buttons auf das JPanel hinzufügt.
Das JPanel ist im Viewport eines JScrollPane,
Ich wollte jetzt das Verhalten erreichen, wenn die scihtbare Fläche des JPanels mit JButtons voll ist, dass dann die Slider der JScrollPane sichtbar werden,
Das ist mir nicht klar, wie ich das machen kann,
das JPanel hat ja eine fixe Größe, dieses bekommt ja davon gar nichts mit, sodass sich die Slider der JScrollPane aktivieren könnten.
Wie kann man das realisieren, ich steh da ein bisschen auf der Leitung?
Vielen Dank,
ich habe unteres Programm, welches auf einem JPanel, mittels Popup- Menü Buttons auf das JPanel hinzufügt.
Das JPanel ist im Viewport eines JScrollPane,
Ich wollte jetzt das Verhalten erreichen, wenn die scihtbare Fläche des JPanels mit JButtons voll ist, dass dann die Slider der JScrollPane sichtbar werden,
Das ist mir nicht klar, wie ich das machen kann,
das JPanel hat ja eine fixe Größe, dieses bekommt ja davon gar nichts mit, sodass sich die Slider der JScrollPane aktivieren könnten.
Wie kann man das realisieren, ich steh da ein bisschen auf der Leitung?
Vielen Dank,
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class Main {
public Main() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane sp = new JScrollPane();
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(450, 450));
p.setBackground(Color.RED);
MyPopupMenu popup = new MyPopupMenu(p, sp, f);
p.addMouseListener(popup);
p.add(popup);
sp.setViewportView(p);
f.add(sp);
f.setBounds(10, 10, 450, 450);
f.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
class MyPopupMenu extends PopupMenu implements MouseListener, ActionListener {
private final MenuItem miAdd;
private JPanel p;
private JScrollPane sp;
private JFrame f;
public MyPopupMenu(JPanel p, JScrollPane sp, JFrame f) {
this.p = p;
this.sp = sp;
this.f = f;
miAdd = new MenuItem("Hinzufügen");
miAdd.addActionListener(this);
miAdd.setFont(new Font("Arial", 1, 12));
add(miAdd);
addSeparator();
}
public void mousePressed(MouseEvent e) {
if(SwingUtilities.isRightMouseButton(e) && e.getClickCount() == 1) {
this.show(e.getComponent(), e.getX(), e.getY());
}
}
public void actionPerformed(ActionEvent e) {
JButton b = new JButton("test");
b.setPreferredSize(new Dimension(200, 100));
p.add(b);
p.repaint();
p.validate();
sp.repaint();
sp.validate();
f.repaint();
f.validate();
}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
}
}