是这样的我做一个SWING的界面,加一个滚动轴,然后我用了JScrollPane这个类,但是我不是在文本域里加滚动轴,具体看我代码,我这只是个测试,界面里还有有很多VPN要添加,所以我想做一个滚动轴,知道的帮我看看,谢谢了。代码如下:package com.aiflow.xcs.vpn.client;import java.awt.Container;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class zxb extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private Container contentPane;// 整个容器 private JLabel label_VPNUname;//vpn名称
private JLabel label_VPNUname_x;//vpn名称
private JLabel label_VPNPhone;//vpn名称

private JTextField textField_VPNUname;

private JPanel jPanel_phone;
private JButton jbutton_1;

private JScrollPane scroll;

List<String> list = null;

FileOutputStream fos;

public zxb() {
super();
try {
UIManager
.setLookAndFeel("org.fife.plaf.Office2003.Office2003LookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
initSelf();
initComponets();
}

JFrame jf = new JFrame();

private void initSelf() {
jf.setVisible(true);
jf.setTitle("配置告警短信的号码");
jf.setBounds(240, 130, 350, 560);
jf.setDefaultCloseOperation(3);//
jf.setResizable(true); // 去掉最大化
jf.setLayout(null);
contentPane = jf.getContentPane();
Toolkit tk = Toolkit.getDefaultToolkit();
Image img = tk.getImage("img/Flow Chart.gif");
jf.setIconImage(img);

}

public void initComponets() { 
jPanel_phone = new JPanel();
jPanel_phone.setBounds(2, 3, 340, 520);
jPanel_phone.setBorder(BorderFactory.createTitledBorder("短信号码配置"));
jPanel_phone.setLayout(null);

list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");

int len = 0;

for (int i = 0; i < list.size(); i++) {
len = list.size();
label_VPNUname_x = new JLabel(list.get(i));
label_VPNUname_x.setBounds(60, 50+i*40, 100, 20);
textField_VPNUname = new JTextField();
textField_VPNUname.setBounds(150, 50+i*40, 150, 20);
jPanel_phone.add(label_VPNUname_x);
jPanel_phone.add(textField_VPNUname);

}

scroll = new JScrollPane(); 
// scroll.getViewport().add(jTextArea);
scroll.setBounds(10, 250, 625, 360);

jbutton_1 = new JButton("保存退出");
jbutton_1.setBounds(120, 50+len*40+50, 80, 30);
jbutton_1.setEnabled(true);
jbutton_1.addActionListener(this);

label_VPNUname = new JLabel("vpn名称");
label_VPNUname.setBounds(45, 10, 100, 60);
label_VPNPhone = new JLabel("短信号码配置");
label_VPNPhone.setBounds(150, 10, 150, 60);


jPanel_phone.add(label_VPNUname);
jPanel_phone.add(label_VPNPhone);
jPanel_phone.add(jbutton_1);

contentPane.add(jPanel_phone);
}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}

public static void main(String[] args) {
// new PhoneFrame();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new zxb();
}
});
}}

解决方案 »

  1.   

    不能使用绝对定位, 需要布局管理器,修改如下。import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;public class zxb extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private Container contentPane;// 整个容器 private JLabel label_VPNUname;// vpn名称
    private JLabel label_VPNUname_x;// vpn名称
    private JLabel label_VPNPhone;// vpn名称 private JTextField textField_VPNUname; private JPanel jPanel_phone;
    private JButton jbutton_1; private JScrollPane scroll; List<String> list = null; FileOutputStream fos; public zxb() {
    super();
    // try {
    // UIManager
    // .setLookAndFeel("org.fife.plaf.Office2003.Office2003LookAndFeel");
    // } catch (Exception e) {
    // e.printStackTrace();
    // }
    initSelf();
    initComponets();
    } JFrame jf = new JFrame(); private void initSelf() {
    jf.setVisible(true);
    jf.setTitle("配置告警短信的号码");
    jf.setSize(350, 560);
    jf.setLocationRelativeTo(null);//居中
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//
    jf.setResizable(true); // 去掉最大化
    contentPane = jf.getContentPane();
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image img = tk.getImage("img/Flow Chart.gif");
    jf.setIconImage(img); } public void initComponets() {
    jPanel_phone = new JPanel(); 
    jPanel_phone.setBorder(BorderFactory.createTitledBorder("短信号码配置"));
    GridLayout gridLayout = new GridLayout(0,2);//网格布局,不限制行,2列
    jPanel_phone.setLayout(gridLayout);

    label_VPNUname = new JLabel("vpn名称", SwingConstants.CENTER);
    label_VPNPhone = new JLabel("短信号码配置", SwingConstants.CENTER);
    jPanel_phone.add(label_VPNUname);
    jPanel_phone.add(label_VPNPhone); list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d"); for (int i = 0; i < list.size(); i++) {
    label_VPNUname_x = new JLabel(list.get(i), SwingConstants.CENTER);
    textField_VPNUname = new JTextField();
    jPanel_phone.add(label_VPNUname_x);
    jPanel_phone.add(textField_VPNUname); } scroll = new JScrollPane(jPanel_phone);//将需要滚动条的Panel直接当参数传入

    JPanel bottom = new JPanel(); jbutton_1 = new JButton("保存退出");
    jbutton_1.setEnabled(true);
    jbutton_1.addActionListener(this); bottom.add(jbutton_1);
    jPanel_phone.add(bottom); contentPane.add(scroll);
    } public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub } public static void main(String[] args) {
    // new PhoneFrame();
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new zxb();
    }
    });
    }}
      

  2.   


    你好,请问怎么获取每个textField_VPNUname的值呢?告诉我下,谢了