㈠ 一道关于流式布局管理器的JAVA问题
你为什么非用流失布局管理器,JFrame的默认容器可以通过getContentPane()方法获取,通过paint方法重绘该容器,如何再添加其他组件呢。JFrame的默认管理器为BorderLayout布局管理器。
我的思路是:可以在JPanel绘图,然后把JPanel容器添加到JFrame容器面板中。代码如下。
public class first4 extends JFrame{
public first4() {
JPanel p1 = new firstPanel();
JPanel p2 = new JPanel();
JLabel label = new JLabel("哈哈");
JButton button = new JButton("提交");
p2.add(label);
p2.add(button);
this.getContentPane().add(p1);
this.getContentPane().add(p2,BorderLayout.SOUTH);
this.setSize(800,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new first4();
}
}
class firstPanel extends JPanel{
String s = "欢迎进入";
public void paint(Graphics g) {
g.setColor(new Color(130, 135, 205));
g.drawLine(200, 160, 340, 160);
g.drawLine(420, 160, 560, 160);
g.drawLine(250, 200, 246, 218);
g.drawLine(270, 200, 260, 240);
g.drawLine(510, 200, 514, 218);
g.drawLine(490, 200, 500, 240);
g.drawRoundRect(345, 220, 70, 50, 30, 20);
g.setColor(Color.RED);
g.setFont(new Font("Dialog", Font.ITALIC + Font.BOLD, 40));
g.drawString(s, 300, 60);
g.setColor(Color.RED);
}
}
㈡ 网格布局管理器的布局问题
Java 中规定:GridLayout 当行数和列数都设置为非零值时,指定的列数将被忽略
当你是添加了17 个button 按照7行排列,就需要 17/7 需要 3列 (7行3列)
当你添加了 12 个button 是需要 12/7 要2列 所以是 7行2列
只有在21-28 个button 的时候才会是 4 列
㈢ JAVA编程布局管理器设置问题,很无解!求高手指教。
定义的类名不要和关键字重复了,你定义的FlowLayout已经是关键字了。
㈣ java 布局管理器 问题
不能,边框布局有五个部分,每个部分只能放一个组件,假如你想在一个部分里面放多个组件,建议你先把这几个组件放在jpanel里,再放入边框布局。
㈤ java布局管理器的问题!!
package my;
import java.awt.FlowLayout;import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class T extends JFrame{
JPanel j1;
JPanel j1_1;
JPanel j1_2;
JPanel j1_3;
JButton J1_1_1;
JButton J1_1_2;
JButton J1_1_3;
JButton J1_2_1;
JButton J1_2_2;
JButton J1_3_1;
public T() {
// TODO Auto-generated constructor stub
j1=(JPanel)this.getContentPane();
j1_1=new JPanel();
J1_1_1=new JButton("1");
J1_1_2=new JButton("2");
J1_1_3=new JButton("3");
j1_1.add(J1_1_1);
j1_1.add(J1_1_2);
j1_1.add(J1_1_3);
j1_1.setLayout(new FlowLayout());
j1_2=new JPanel();
J1_2_1=new JButton("4");
J1_2_2=new JButton("5");
j1_2.add(J1_2_1);
j1_2.add(J1_2_2);
j1_2.setLayout(new FlowLayout());
j1_3=new JPanel();
J1_3_1=new JButton("6");
j1_3.add(J1_3_1);
j1_3.setLayout(new FlowLayout());
j1.add(j1_1);
j1.add(j1_2);
j1.add(j1_3);
j1.setLayout(new GridLayout(3, 1));
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
new T();
}
}
看看,有什么问题么
㈥ java SE中关于布局管理器和组件大小的问题。
你把JFrame设置个BorderLayout,把JPanel放在North里,JPanel就会自动调整大小了。
至于JPanel里的布局,不知你出于什么特殊理由,单纯需要重叠的话应该有合适的布局管理器。另外还有个思路,改变一下你的设计方法,可能就有更简单的方案。实际上很多设计中的需求以前就有很多人遇到了并且作出了好的方案,甚至已经是标准做法,所以多学习参考一下,避免重新发明轮子。
总之,从你的问题的描述看,感觉你的思路可能有问题。
㈦ 在学习Java布局管理器时遇到的问题
你好,你看看你的setLayout应该是谁调用的,应该是frame.setLayout(...),而不是直接写setLayout.
直接写的话,相当于在WhthoutBook中调用setLayout,但是这个方法不存在,所以会报错,说不能在静态方法(main方法)中调用非静态的方法
㈧ Java布局管理器问题
问题一:
自定义的类BorderLayout和 java.awt.BorderLayout 这个类同名了 , 需要修改.
比如修改成BorderLayoutDemo
问题二:
这些组件的复制粘贴 ,注意修改啊 ,jb1 ,jb2 ,jb2...jb2 , jb2添加了4次....
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.NORTH);
this.add(jb2,BorderLayout.EAST);
this.add(jb2,BorderLayout.SOUTH);
this.add(jb2,BorderLayout.WEST);
并且由于你的类名也叫BorderLayout ,所以BorderLayout.CENTER..等方位的值都是null.
缺省的状态下,都会放到中间. 最后的覆盖前面的.所以最后只显示出1个jb2.并且居中
修改后的效果图
importjava.awt.BorderLayout;
importjavax.swing.JButton;
importjavax.swing.JFrame;
//注意类名
{
//定义组件
JButtonjb1,jb2,jb3,jb4,jb5;
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
BorderLayoutDemobl=newBorderLayoutDemo();
}
publicBorderLayoutDemo(){
//创建组件
jb1=newJButton("中部");
jb2=newJButton("北部");
jb3=newJButton("东部");
jb4=newJButton("南部");
jb5=newJButton("西部");
//添加组件
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.NORTH);
this.add(jb3,BorderLayout.EAST);
this.add(jb4,BorderLayout.SOUTH);
this.add(jb5,BorderLayout.WEST);
//设置窗口属性
this.setTitle("边界布局案例");
this.setSize(500,400);
this.setLocation(600,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
㈨ swing的布局管理器没效果
答: 修改后的完成效果图
importjava.awt.BorderLayout;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassLogin{
publicLogin(){
JFramejframe=newJFrame("Login");
jframe.setLayout(newBorderLayout());
JLabeljl1=newJLabel("东");
JLabeljl2=newJLabel("西");
JLabeljl3=newJLabel("南",JLabel.CENTER);//文字在中
JLabeljl4=newJLabel("北",JLabel.CENTER);
JLabeljl5=newJLabel("中",JLabel.CENTER);
jframe.add(jl1,BorderLayout.EAST);
jframe.add(jl2,BorderLayout.WEST);
jframe.add(jl3,BorderLayout.SOUTH);
jframe.add(jl4,BorderLayout.NORTH);
jframe.add(jl5,BorderLayout.CENTER);//把此处的jl4修改成jl5
jframe.setSize(230,230);
jframe.setLocationRelativeTo(null);//窗口居中
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}
publicstaticvoidmain(String[]args){
newLogin();
}
}