java Swing布局中JFrame添加new JScrollPane(JTextArea)控制大小

rachel_tang 2009-04-01 09:52:06
需要大家幫忙處理的是 在布局中將JTextArea errorPro 在窗口中直接顯示8行﹐現在對JTextArea ﹑JScrollPane﹑JFrame都無法改變JTextArea errorPro大小 當設定JTextArea errorPro大小的時候﹐小有改變但是口中只能顯示一部分出來。是否是因為 JPanel 的原因﹐口好象是在jf.setLayout(new GridLayout(11,5));被平均分配成11行﹐每行里面控鍵的大小改變大小也無法全部顯示﹐只能顯示出來11/800的高度。最好是能幫忙直接改好注釋下什么原因﹐謝謝了的

public class AMassPro_V3{
private static String starFname = "F:\\AMassPro_V3.3";
private static String saveFname = "C:\\AMass";
private int bterror = 0;
private static int checkedNum = 0;

JFrame jf = new JFrame("藍牙");
//使用Swing的JFrame組件類
private JLabel jl1 = new JLabel("原工單號");
private JLabel jl2 = new JLabel("新工單號");
private JLabel jl3 = new JLabel("起始號");
private JLabel jl4 = new JLabel("結束號");
private JLabel newjl3 = new JLabel("新起始號");
private JLabel newjl4 = new JLabel("新結束號");
private JLabel jl5 = new JLabel("nextBTAddr");
private JLabel unCheckedDes = new JLabel("未完成工單");
private static JTextField description;//一個JTextField組件原工單號
private static JTextField newDescription;//一個JTextField組件新工單號
private JTextField strAddress;//一個JTextField組件起始號
private JTextField endAddress;//一個JTextField組件結束號
private JTextField newStrAddress;//一個JTextField組件起始號
private JTextField newEndAddress;//一個JTextField組件結束號
private JTextField nextBTAddrField;//下一個開始檢測號碼
private JTextField newNextBTAddrField;//新下一個開始檢測號碼

private JTextField desId;//要查詢的未完成工單號

private static JTextArea errorPro;//測試問題
private JButton openButton;//一個JButton組件開始
private JButton endButton;//一個JButton組件結束
private JButton unCheckButton;//一個JButton組件查看未完成工單
private JButton sfButton;//文件選擇
private JTextField filePath;//文件路徑

JRadioButton newDesRadio=new JRadioButton("新工單",true);
JRadioButton oldDesRadio=new JRadioButton("舊工單");
ButtonGroup radioGroup = new ButtonGroup();

private JPanel jp1 = new JPanel(new FlowLayout());
private JPanel jp2 = new JPanel(new FlowLayout());
private JPanel jp3 = new JPanel(new FlowLayout());
private JPanel jp4 = new JPanel(new FlowLayout());
private JPanel jp5 = new JPanel(new FlowLayout());
private JPanel jp6 = new JPanel(new FlowLayout());
private JPanel jp7 = new JPanel(new FlowLayout());
private JPanel jp8 = new JPanel(new FlowLayout());


/**
* 藍牙輔助程序界面
*
*/
public AMassPro_V3(){
jf.setLayout(null);
//ContenPane = (JPanel) this.getContentPane();
//給JFrame添加一個事件監聽器用來關閉窗口
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
String des = "";
String sAdd = "";
String sEnd = "";
String nextBTAddr = "";

//"請輸入工單號"
description = new JTextField(des);
description.setPreferredSize(new Dimension(120,20));
description.setEditable(false);//設置文本為只讀
newDescription = new JTextField();
newDescription.setPreferredSize(new Dimension(120,20));
strAddress = new JTextField(sAdd);
strAddress.setEditable(false);
strAddress.setPreferredSize(new Dimension(120,20));
endAddress = new JTextField(sEnd);
endAddress.setEditable(false);
endAddress.setPreferredSize(new Dimension(120,20));
newStrAddress = new JTextField();
newStrAddress.setPreferredSize(new Dimension(120,20));

newEndAddress = new JTextField();
newEndAddress.setPreferredSize(new Dimension(120,20));

nextBTAddrField = new JTextField(nextBTAddr);
nextBTAddrField.setEditable(false);
nextBTAddrField.setPreferredSize(new Dimension(120,20));

newNextBTAddrField = new JTextField();
newNextBTAddrField.setPreferredSize(new Dimension(120,20));

desId = new JTextField();
desId.setPreferredSize(new Dimension(120,28));


errorPro = new JTextArea(11,30);
errorPro.setForeground(Color.red);//設置錯誤提示字體顏色為紅
errorPro.setEditable(false);
errorPro.setLineWrap(true);
errorPro.setCaretPosition(errorPro.getText().length());

JScrollPane jScrollPane1 = new JScrollPane(errorPro);
jScrollPane1.setSize(800,200);



openButton = new JButton("開始");
endButton = new JButton("完成");
openButton.addMouseListener(new myMouseListene());
ActionLis listener = new ActionLis();
endButton.addActionListener(listener);

unCheckButton = new JButton("查詢");
UnCheckButtonActionLis unCheckListener = new UnCheckButtonActionLis();
unCheckButton.addActionListener(unCheckListener);

sfButton = new JButton("文件選擇");
SelectFileActionLis selectFileListener = new SelectFileActionLis();
sfButton.addActionListener(selectFileListener);
filePath = new JTextField("請選擇");
filePath.setPreferredSize(new Dimension(180,28));


radioGroup.add(newDesRadio);
radioGroup.add(oldDesRadio);


jp1.add(jl1);
jp1.add(description);
jp1.add(jl2);
jp1.add(newDescription);
jp2.add(jl3);
jp2.add(strAddress);
jp2.add(newjl3);
jp2.add(newStrAddress);
jp3.add(jl4);
jp3.add(endAddress);
jp3.add(newjl4);
jp3.add(newEndAddress);

jp4.add(openButton);
jp4.add(endButton);
jp7.add(unCheckedDes);
jp7.add(desId);
jp7.add(unCheckButton);
jp5.add(jl5);
jp5.add(newNextBTAddrField);
jp5.add(nextBTAddrField);
jp6.add(sfButton);
jp6.add(filePath);
jp8.add(newDesRadio);
jp8.add(oldDesRadio);




jf.add(jp1);
jf.add(jp2);
jf.add(jp3);
jf.add(jp4);
jf.add(jp8);
jf.add(jp7);
jf.add(jp5);
jf.add(jp6);
jf.add(jScrollPane1);

jf.setBounds(100,100,800,600);

jf.setLayout(new GridLayout(11,5));

jf.setSize(800,600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);//顯示此JFrame
}
...全文
2223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aSysBang 2009-04-10
  • 打赏
  • 举报
回复
可以采用布局管理器 和 设置坐标相结合的方法
大的框架 直接布局 有些细致的地方 可以新建个JPanel 而这个采用 坐标设置
最后把Jpanel 加入到大的框架中就可以了
dawn023 2009-04-01
  • 打赏
  • 举报
回复
用空布局不是很好。
rachel_tang 2009-04-01
  • 打赏
  • 举报
回复
問題已經解決﹐不用jf.setLayout(new GridLayout(11,5));
直接
jp1.setBounds(0, 10, 800, 50);
jp2.setBounds(0, 60, 800, 50);
jp3.setBounds(0, 110, 800, 50);
jp4.setBounds(0, 160, 800, 50);
jp5.setBounds(0, 210, 800, 50);
jp6.setBounds(0, 260, 800, 50);
jp7.setBounds(0, 310, 800, 50);
jp8.setBounds(0, 360, 800, 50);
jScrollPane1.setBounds(0,410, 800, 200);
rachel_tang 2009-04-01
  • 打赏
  • 举报
回复
private static JTextArea errorPro;//測試問題

errorPro = new JTextArea(11,30);
errorPro.setForeground(Color.red);//設置錯誤提示字體顏色為紅
errorPro.setEditable(false);
errorPro.setLineWrap(true);
errorPro.setCaretPosition(errorPro.getText().length());

JScrollPane jScrollPane1 = new JScrollPane(errorPro);
jScrollPane1.setSize(800,200);
//

jf.add(jScrollPane1);

jf.setBounds(100,100,800,600);

jf.setLayout(new GridLayout(11,5));
主要布局在這三個位置。上面代碼可以直接調試。麻煩幫忙把errorPro直接顯示的大小變成最少8行這樣﹐現在只能直接顯示3-4行 需要靠滾動條上下拉動看 比較麻煩。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧