一、其实这个问题相当简单,那就是我想在Box 中放一个 Jpanel,但是放进去以后其他组件就都移位了,所以想请教下大家,怎么才能让它不移位。二、代码中注释掉的 setMSize 这个方法我的意图是将所有的组件都通过它来设置大小,但是不行,为什么会跳出 java.lang.NullPonintException 这个错误呢??三、我觉得JLabel比Jpanel来的实用,因为如果在这个程序上再放置如 Button、JTextField等组件,JLabel 是可以通过setLocationi()来定位的(但是JPanel就不行,JPanel想实现定位的话,那么必须将JFrame进行setLayout(null)才行,这样太吃力了,没个组件都得用绝对定位),而且也不能加入图片,所以我觉得如果 JLabel 比 JPanel 来的实用,JPanel我觉得不太有用。public class Test extends JFrame{
JLabel label1, label2, label3;
JPanel panel;
Box box;
public Test(){
label1 = new JLabel("label1");
label2 = new JLabel("label2");
label3 = new JLabel("label3");
panel = new JPanel();
label1.setOpaque(true);
label2.setOpaque(true);
label3.setOpaque(true);
label1.setBackground(Color.CYAN);
label2.setBackground(Color.BLUE);
label3.setBackground(Color.green);
Dimension size1 = new Dimension(350, 400);
box = Box.createVerticalBox();
box.setSize(size1);
box.setPreferredSize(size1);
box.setMaximumSize(size1);
box.setMinimumSize(size1);
setMSize(label1, 350, 100);
setMSize(label2, 350, 100);
setMSize(label3, 350, 100);
Dimension size2 = new Dimension(350, 100);
panel.setSize(size2);
panel.setPreferredSize(size2);
panel.setMaximumSize(size2);
panel.setMinimumSize(size2);
addComponent();
this.add(box);
}
private static void setMSize(JLabel c, int w, int h){
Dimension size = new Dimension(w, h);
c.setSize(w, h);
c.setPreferredSize(size);
c.setMaximumSize(size);
c.setMinimumSize(size);
}
// private static void setMSize(JComponent c, int w, int h){
// Dimension size = new Dimension(w, h);
// c.setSize(w, h);
// c.setPreferredSize(size);
// c.setMaximumSize(size);
// c.setMinimumSize(size);
// }
private void addComponent(){
box.add(label1);
box.add(label2);
// box.add(panel);
box.add(label3);
}
public static void main(String[] args){
Test test = new Test();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setSize(350, 400);
test.setVisible(true);
}
}
JLabel label1, label2, label3;
JPanel panel;
Box box;
public Test(){
label1 = new JLabel("label1");
label2 = new JLabel("label2");
label3 = new JLabel("label3");
panel = new JPanel();
label1.setOpaque(true);
label2.setOpaque(true);
label3.setOpaque(true);
label1.setBackground(Color.CYAN);
label2.setBackground(Color.BLUE);
label3.setBackground(Color.green);
Dimension size1 = new Dimension(350, 400);
box = Box.createVerticalBox();
box.setSize(size1);
box.setPreferredSize(size1);
box.setMaximumSize(size1);
box.setMinimumSize(size1);
setMSize(label1, 350, 100);
setMSize(label2, 350, 100);
setMSize(label3, 350, 100);
Dimension size2 = new Dimension(350, 100);
panel.setSize(size2);
panel.setPreferredSize(size2);
panel.setMaximumSize(size2);
panel.setMinimumSize(size2);
addComponent();
this.add(box);
}
private static void setMSize(JLabel c, int w, int h){
Dimension size = new Dimension(w, h);
c.setSize(w, h);
c.setPreferredSize(size);
c.setMaximumSize(size);
c.setMinimumSize(size);
}
// private static void setMSize(JComponent c, int w, int h){
// Dimension size = new Dimension(w, h);
// c.setSize(w, h);
// c.setPreferredSize(size);
// c.setMaximumSize(size);
// c.setMinimumSize(size);
// }
private void addComponent(){
box.add(label1);
box.add(label2);
// box.add(panel);
box.add(label3);
}
public static void main(String[] args){
Test test = new Test();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setSize(350, 400);
test.setVisible(true);
}
}
解决方案 »
- 一个关于HashMap的题目
- java.lang.NullPointerException: Null child not allowed
- 关于tomcat的ssl配置的问题
- Implementing an Interface的几个问题?
- $$$$$这里有学java已就业的吗?¥¥¥
- ⊙ java 小菜鸟的问题
- 我扩展了DefaultMutableTreeNode,增加了新字断,怎样才能在不调用JTree的方法而自动更新JTree
- 请问谁有里面说的这个package?100分酬谢
- 怎样读取表名
- 高分求助 :怎么保存图像? 在线等候!!!!!!!
- NullpointerException,但没有stacktrace信息?
- WEBWORK 标签问题
import java.awt.Dimension;import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;public class Test extends JFrame{
JLabel label1, label2, label3;
JPanel panel;
Box box;
public Test(){
label1 = new JLabel("label1");
label2 = new JLabel("label2");
label3 = new JLabel("label3");
panel = new JPanel();
panel.setLayout(null);
label1.setOpaque(true);
label2.setOpaque(true);
label3.setOpaque(true);
label1.setBackground(Color.CYAN);
label2.setBackground(Color.BLUE);
label3.setBackground(Color.green);
Dimension size1 = new Dimension(350, 400);
box = Box.createVerticalBox();
box.setSize(size1);
box.setPreferredSize(size1);
box.setMaximumSize(size1);
box.setMinimumSize(size1);
setMSize(label1, 350, 100);
setMSize(label2, 350, 100);
setMSize(label3, 350, 100);
// Dimension size2 = new Dimension(350, 100);
// panel.setSize(size2);
// panel.setPreferredSize(size2);
// panel.setMaximumSize(size2);
// panel.setMinimumSize(size2);
addComponent();
this.add(box); }
private static void setMSize(JLabel c, int w, int h){
Dimension size = new Dimension(w, h);
c.setSize(w, h);
c.setPreferredSize(size);
c.setMaximumSize(size);
c.setMinimumSize(size);
}
// private static void setMSize(JComponent c, int w, int h){
// Dimension size = new Dimension(w, h);
// c.setSize(w, h);
// c.setPreferredSize(size);
// c.setMaximumSize(size);
// c.setMinimumSize(size);
// }
private void addComponent(){
box.add(label1);
box.add(label2);
box.add(panel);
box.add(label3);
}
public static void main(String[] args){
Test test = new Test();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setSize(350, 400);
test.setVisible(true);
}
}
JLabel l1=new JLabel("one");
JLabel l2=new JLabel("two");
JLabel l3=new JLabel("three");
pane.add(l1);
pane.add(l2);
pane.add(l3);
Insets insets=pane.getInsets();
Dimension size=l1.getPreferredSize();
l1.setBounds(25+insets.left,5+insets.top,size.width,size.height);
size=l2.getPreferredSize();
l2.setBounds(55+insets.left,40+insets.top,size.width,size.height);
size=l3.getPreferredSize();
l3.setBounds(100+insets.left,15+insets.top,size.width+50,size.height+20);
注意容器改变后,需要重新部署或者刷新下GUI
Layout,
protected String backgroundImage = null;
public HavaBgImagePanel(String imgUrl) {
ImageIcon icon=new ImageIcon(imgUrl);
this.backgroundImage = String.valueOf(icon);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Image img = Toolkit.getDefaultToolkit().getImage(backgroundImage);
g.drawImage(img, 0, 0, null, this);
}
}