EDIT: Scheiss Copy Paste, gerade in der wichtigen Sektion waren die Kommentare falsch.
EDIT: Code gegen funktionierenden Code ausgetauscht. In diesem Beispiel lassen sich alle 3 maximieren und minimieren. Das letze repaint() ist wichtig!
Ich hab mal den ganzen Code reinkopiert, ich denke dann versteht man es besser. Der interesante Code ist im MouseListener - mouseClicked.
Ich habe 3 TextPanes in 3 ScrollPanes die wiederum in 2 SplitPanes sitzen.
Nun will ich das die einzelnen Koponenten per Doppelklick maxiumierbar sind, wie z.b. bei einem InternalFrame. DAs Probem ist das Update des GUIs da ich dort eine Exception geworfen bekomme. Es funktioniert trotzdem aber so kann das natürlich nicht richtig sein. Mit redraw() ist das Updateverhalten noch schlimmer.
Jemand ne Idee?
Gruss,
Isa
EDIT: Code gegen funktionierenden Code ausgetauscht. In diesem Beispiel lassen sich alle 3 maximieren und minimieren. Das letze repaint() ist wichtig!
Ich hab mal den ganzen Code reinkopiert, ich denke dann versteht man es besser. Der interesante Code ist im MouseListener - mouseClicked.
Ich habe 3 TextPanes in 3 ScrollPanes die wiederum in 2 SplitPanes sitzen.
Nun will ich das die einzelnen Koponenten per Doppelklick maxiumierbar sind, wie z.b. bei einem InternalFrame. DAs Probem ist das Update des GUIs da ich dort eine Exception geworfen bekomme. Es funktioniert trotzdem aber so kann das natürlich nicht richtig sein. Mit redraw() ist das Updateverhalten noch schlimmer.
Jemand ne Idee?
Gruss,
Isa
Code:
java.lang.IllegalArgumentException: null source
at java.util.EventObject.<init>(Unknown Source)
at java.awt.AWTEvent.<init>(Unknown Source)
at java.awt.event.ActionEvent.<init>(Unknown Source)
at javax.swing.text.DefaultCaret.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
Code:
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextPane;
public class Windowtest extends JFrame implements MouseListener
{
//nur definitionen
private JTextPane jTextPane1 = new JTextPane();
private JTextPane jTextPane2 = new JTextPane();
private JTextPane jTextPane3 = new JTextPane();
private JScrollPane jscrollPane1 = new JScrollPane(jTextPane1);
private JScrollPane jscrollPane2 = new JScrollPane(jTextPane2);
private JScrollPane jscrollPane3 = new JScrollPane(jTextPane3);
private JSplitPane splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
jscrollPane1,
jscrollPane2);
private JSplitPane splitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
splitPane1,
jscrollPane3);
private boolean bTextPaneMaxed = false;
public Windowtest()
{
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
init();
}
private void init()
{
//damits nen bischen hübscher aussieht, nicht wichtig
jTextPane1.setPreferredSize(new Dimension(200, 100));
jTextPane2.setPreferredSize(new Dimension(200, 100));
jTextPane3.setPreferredSize(new Dimension(400, 100));
jTextPane1.setSize(new Dimension(100, 200));
jTextPane2.setSize(new Dimension(100, 200));
jTextPane3.setSize(new Dimension(400, 100));
jTextPane1.setEditable(false);
jTextPane2.setEditable(false);
jTextPane3.setEditable(false);
jTextPane1.setText("Test1");
jTextPane2.setText("Test2");
jTextPane3.setText("Test3");
//zusammengebaute Komponente aus allen 3 TextPanes
//2 oben je links und rechts in einer splitpane und eine unten
getContentPane().add(splitPane2);
jTextPane1.addMouseListener(this);
jTextPane2.addMouseListener(this);
jTextPane3.addMouseListener(this);
}
public void mouseClicked(MouseEvent e)
{
int iClick = e.getClickCount();
if(iClick % 2 == 0)
{
if(bTextPaneMaxed)
{
getContentPane().remove(0);
splitPane2.setRightComponent((Component)e.getSource());
if(((Component)e.getSource()) == jTextPane1)
{
splitPane1.setLeftComponent((Component)e.getSource());
splitPane2.setRightComponent(jTextPane3);
}
if(((Component)e.getSource()) == jTextPane2)
{
splitPane1.setRightComponent((Component)e.getSource());
splitPane2.setRightComponent(jTextPane3);
}
if(((Component)e.getSource()) == jTextPane3)
{
splitPane2.setRightComponent((Component)e.getSource());
}
getContentPane().add(splitPane2);
bTextPaneMaxed = false;
validate();
}
else
{
getContentPane().remove(0);
getContentPane().add((Component)e.getSource());
bTextPaneMaxed = true;
validate();
}
}
//validateTree();
repaint();
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public static void main(String[] args)
{
Windowtest wt = new Windowtest();
wt.pack();
wt.show();
}
}