㈠ 一道關於流式布局管理器的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();
}
}