Hi!
Ich würde gerne ein JPanel haben, welches man ein JComponent übergibt, welches dann im Center-Bereich dieses JPanels angezeigt wird. Neben diesem JCoponent sollen dann zwei JButtons angezeigt werden, welche das JPanel vergrößert bzw. verkleinert.
Ich habe nun die größe mit setSize() verändert. Es wird aus die Größe von dem JPanel vergrößert (man erkennt einen grauen Rand, der das Objekt darunter verdeckt), aber das JComponent selber wird nicht vergrößert. Außerdem müssen die umliegenden Objekte ja neu gezeichnet werden.
Das JPanel sitzt bei mir im GridBagLayout.
Wie muss ich die Sache angehen, um das gewüschte Verhalten zu erreichen?
Konstantin
Ich würde gerne ein JPanel haben, welches man ein JComponent übergibt, welches dann im Center-Bereich dieses JPanels angezeigt wird. Neben diesem JCoponent sollen dann zwei JButtons angezeigt werden, welche das JPanel vergrößert bzw. verkleinert.
Ich habe nun die größe mit setSize() verändert. Es wird aus die Größe von dem JPanel vergrößert (man erkennt einen grauen Rand, der das Objekt darunter verdeckt), aber das JComponent selber wird nicht vergrößert. Außerdem müssen die umliegenden Objekte ja neu gezeichnet werden.
Das JPanel sitzt bei mir im GridBagLayout.
Wie muss ich die Sache angehen, um das gewüschte Verhalten zu erreichen?
Konstantin
Code:
/*
* ResizeComponentContainer.java
*
* Created on January 2, 2007, 3:09 PM
*/
package view;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JLabel;
public class ResizeComponentContainer extends javax.swing.JPanel
{
JComponent component;
/** Creates new form ResizeComponentContainer */
public ResizeComponentContainer()
{
initComponents();
this.setComponent(new JLabel("(no component)"));
}
public ResizeComponentContainer(JComponent component)
{
initComponents();
this.setComponent(component);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents()
{
java.awt.GridBagConstraints gridBagConstraints;
jPanelRight = new javax.swing.JPanel();
jButtonIncreaseSize = new javax.swing.JButton();
jButtonDecreaseSize = new javax.swing.JButton();
jScrollPane = new javax.swing.JScrollPane();
setLayout(new java.awt.BorderLayout());
jPanelRight.setLayout(new java.awt.GridBagLayout());
jButtonIncreaseSize.setText("+");
jButtonIncreaseSize.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButtonIncreaseSizeActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.insets = new java.awt.Insets(1, 0, 1, 0);
jPanelRight.add(jButtonIncreaseSize, gridBagConstraints);
jButtonDecreaseSize.setText("-");
jButtonDecreaseSize.setPreferredSize(jButtonIncreaseSize.getPreferredSize());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.insets = new java.awt.Insets(1, 0, 1, 0);
jPanelRight.add(jButtonDecreaseSize, gridBagConstraints);
add(jPanelRight, java.awt.BorderLayout.EAST);
add(jScrollPane, java.awt.BorderLayout.CENTER);
}// </editor-fold>
private void jButtonIncreaseSizeActionPerformed(java.awt.event.ActionEvent evt)
{
Dimension dim = this.getSize();
dim.setSize(dim.getWidth(), dim.getHeight() + 10);
//this.setSize(dim);
this.setSize(dim);
this.getParent().repaint();
repaint();
}
public void setComponent(JComponent component)
{
jScrollPane.setViewportView(component);
this.component = component;
}
public JComponent getComponent()
{
return component;
}
// Variables declaration - do not modify
private javax.swing.JButton jButtonDecreaseSize;
private javax.swing.JButton jButtonIncreaseSize;
private javax.swing.JPanel jPanelRight;
private javax.swing.JScrollPane jScrollPane;
// End of variables declaration
}