//当面板上没有控件的时候,好像总是在调用... jPanel13 = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 20)) {
@Override
public Dimension getPreferredSize() {
JViewport viewport = (JViewport) getParent();
if (viewport != null) {
int wid = viewport.getWidth();
// int hei=viewport.getHeight(); //2008-04-18
setSize(wid, 671);
//setSize(wid,hei); //2008-04-18
doLayout();
FlowLayout layout = (FlowLayout) getLayout();
int hei = layout.getVgap();
// hei=layout.getVgap(); //2008-04-18
//int hei=25;
for (int i = 0; i < getComponentCount(); i++) {
Component c = getComponent(i);
hei = Math.max(hei, c.getY() + c.getHeight()
+ layout.getVgap());
}
return new Dimension(wid, hei);
}
return super.getPreferredSize();
}
};
解决方案 »
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 一个看不懂的程序
- 数据库中的字符集和java工程中的字符集不一样,怎么办?
- java.net.BindException:Address already in use:JVM_Bind
- 求模的问题
- Linux下,后台执行JAR问题
- 请教关于DES的简单问题
- 请教如何用java做成这样的界面?
- 怎样实现帮助功能?
- 下面static一段为什么写在类的方法外面
- StringBuffer sb = new StringBuffer("a"),问这句话创建了几个对象,不算引用
- 请问weblogic哪个版本最好用?应用的最广泛?我要配合ORACLE9使用
这个代码主要是为了实现:
在jPanel13上显示的控件当超出边界大小时自动换行显示。
放在initComponents()方法中,在构造方法中调用initComponents();
可是在调试的过程中发现这总分代码总是在执行!
各位有知道的吗?能帮我分析一下吗?
搞了好久了!new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 20)) {
@Override
public Dimension getPreferredSize() {
JViewport viewport = (JViewport) getParent();
if (viewport != null&&viewport.getComponentCount()>0) {
int wid = viewport.getWidth();
setSize(wid, 671);
doLayout();
FlowLayout layout = (FlowLayout) getLayout();
int hei = layout.getVgap();
for (int i = 0; i < getComponentCount(); i++) {
Component c = getComponent(i);
hei = Math.max(hei, c.getY() + c.getHeight()
+ layout.getVgap());
c=null;
}
return new Dimension(wid, hei);
}
viewport=null;
return super.getPreferredSize();
}
};jPanel13放在一个JScrollPane上!嗯,有谁知道自动换行显示的方法!请指导一下.谢谢!就是当jPanel13上一行只能显示3个JLabel,当我有6个时就分二行显示?
当动态改变JLabel的大小时一行只能显示2个的话,就动态的分三行显示!自动换行!
import java.awt.Dimension;
import java.awt.FlowLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JViewport;public class ChangeLinePanel extends JPanel {
public ChangeLinePanel() {
this.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20));
} @Override
public Dimension getPreferredSize() {
JViewport viewport = (JViewport) getParent();
if (viewport != null && viewport.getComponentCount() > 0) {
int wid = viewport.getWidth();
doLayout();
System.out.println("getPreferredSize: " + getComponentCount());
FlowLayout layout = (FlowLayout) getLayout();
int hei = layout.getVgap();
for (int i = 0; i < getComponentCount(); i++) {
Component c = getComponent(i);
hei = Math.max(hei, c.getY() + c.getHeight() + layout.getVgap());
c = null;
}
return new Dimension(wid, hei);
}
// viewport = null;
return super.getPreferredSize(); } /**
* @param args
*/
public static void main(String[] args) {
ChangeLinePanel clp = new ChangeLinePanel();
for (int i = 0; i < 20; i++) {
JButton b = new JButton(Integer.valueOf(i).toString());
clp.add(b);
}
JFrame f = new JFrame();
f.getContentPane().add(new JScrollPane(clp));
f.setVisible(true);
f.setSize(200, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}