[求达人]关于JTable和JScrollPane和其他控件一起显示的问题!有图! 这个是 上传图 但是下面应该有一个JTable 的才对 但是不显示3楼放源码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这图 是我把 构造函数的 setLayout(null) 注释了 的效果。 //setLayout(null);3楼放源码 package nc.ui.rt.rt01;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.io.File;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.table.DefaultTableModel;public class ImportInvCostUI extends JPanel implements FocusListener { class IvjEventHandler implements ActionListener { final ImportInvCostUI this$0; public void actionPerformed(ActionEvent e) { } IvjEventHandler() { this$0 = ImportInvCostUI.this; } } IvjEventHandler ivjEventHandler; private JLabel ivjJLabelSelect; private JLabel ivjJLabelTitle; private JPanel ivjJPanel1; private JTextArea ivjSrcFilePath; private JButton ivjBtnReset; private JButton ivjBtnBrowseSrc; private JButton ivjBtnImport; private String m_sysDate; private File file = null; // 表格 private JTable ivtable; // 滚动条 private JScrollPane scrollPane; // 接口实现 // private IRt01 irt01; // private IRt01 getFn_itf() { // if (irt01 == null) // irt01 = (IRt01) NCLocator.getInstance().lookup( // IRt01.class.getName()); // return irt01; // } public ImportInvCostUI() { ivjBtnBrowseSrc = null; ivjEventHandler = new IvjEventHandler(); ivjJLabelSelect = null; ivjJLabelTitle = null; ivjJPanel1 = null; ivjSrcFilePath = null; ivjBtnReset = null; ivjBtnImport = null; m_sysDate = null; ivtable = null; scrollPane = null; initialize(); // System.out.println((new StringBJlder("<<<<<<<<<<<<<<<<<")).append( // m_sysDate).append(">>>>>>>>>>>>>>").toString()); } private JTable getTableDS() { if (ivtable == null) { String[] headers = { "公司编码", "部门编码", "存货编码", "客户编码", "结算方式编码", "成本1", "成本2" }; Object[][] cellData = null; DefaultTableModel model = new DefaultTableModel(cellData, headers) { public boolean isCellEditable(int row, int column) { return false; } }; ivtable = new JTable(model); ivtable.setName("TableDS"); ivtable.setBounds(39, 115, 750, 290); ivtable.setRowHeight(20); ivtable.setSelectionMode(0); // ivtable.setPreferredScrollableViewportSize(new // Dimension(550,30)); } return ivtable; } private JButton getBtnBrowseSrc() { if (ivjBtnBrowseSrc == null) { try { ivjBtnBrowseSrc = new JButton(); ivjBtnBrowseSrc.setName("BtnBrowseSrc"); ivjBtnBrowseSrc.setText("浏览"); ivjBtnBrowseSrc.setBounds(617, 82, 80, 22); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjBtnBrowseSrc; } private JLabel getJLabelSelect() { if (ivjJLabelSelect == null) { try { ivjJLabelSelect = new JLabel(); ivjJLabelSelect.setName("JLabelSelect"); ivjJLabelSelect.setFont(new Font("dialog", 1, 12)); ivjJLabelSelect.setText("选择文件"); ivjJLabelSelect.setBounds(39, 78, 69, 19); ivjJLabelSelect.setForeground(new Color(102, 102, 153)); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjJLabelSelect; } private JLabel getJLabelTitle() { if (ivjJLabelTitle == null) { try { ivjJLabelTitle = new JLabel(); ivjJLabelTitle.setName("JLabelTitle"); ivjJLabelTitle.setFont(new Font("dialog", 1, 22)); ivjJLabelTitle.setText("上传Excel存货成本"); ivjJLabelTitle.setBounds(248, 44, 307, 21); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjJLabelTitle; } private JPanel getJPanel1() { if (ivjJPanel1 == null) { try { ivjJPanel1 = new JPanel(); ivjJPanel1.setName("JPanel1"); ivjJPanel1.setLayout(null); ivjJPanel1.setBounds(-10, -1, 784, 1); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjJPanel1; } private JTextArea getSrcFilePath() { if (ivjSrcFilePath == null) { try { ivjSrcFilePath = new JTextArea(); ivjSrcFilePath.setName("srcFilePath"); ivjSrcFilePath.setBounds(116, 80, 475, 24); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjSrcFilePath; } public String getTitle() { return "存货成本导入"; } private void handleException(Throwable exception) { System.out.println("--------- 未捕捉到的异常 ---------"); exception.printStackTrace(System.out); } // 初始化监听 private void initConnections() throws Exception { getBtnBrowseSrc().addActionListener(ivjEventHandler); getBtnReset().addActionListener(ivjEventHandler); getBtnImport().addActionListener(ivjEventHandler); } private void initialize() { try { setName("EAIDataTrafficJ"); //setLayout(null); setSize(839, 464); add(getJPanel1(), getJPanel1().getName()); add(getJLabelSelect(), getJLabelSelect().getName()); add(getSrcFilePath(), getSrcFilePath().getName()); add(getBtnBrowseSrc(), getBtnBrowseSrc().getName()); add(getJLabelTitle(), getJLabelTitle().getName()); add(getBtnReset(), getBtnReset().getName()); add(getBtnImport(), getBtnImport().getName()); add(getTableDS(), getTableDS().getName()); add(getJScrollPane(), getJScrollPane().getName()); initConnections(); } catch (Throwable ivjExc) { handleException(ivjExc); } } private JScrollPane getJScrollPane() { if (scrollPane == null) { scrollPane = new JScrollPane(getTableDS()); // scrollPane.getViewport().add(ivtable); // scrollPane.setBorder(new BevelBorder(BevelBorder.)); scrollPane.setName("scrollPane"); } return scrollPane; } // public static void main(String args[]) { // try { // JFrame frame = new JFrame(); // importsaleorderJ EAIDataTrafficJ = new importsaleorderJ(); // frame.setContentPane(EAIDataTrafficJ); // frame.setSize(EAIDataTrafficJ.getSize()); // frame.addWindowListener(new WindowAdapter() { // // public void windowClosing(WindowEvent e) { // System.exit(0); // } // // }); // frame.show(); // Insets insets = frame.getInsets(); // frame.setSize(frame.getWidth() + insets.left + insets.right, frame // .getHeight() // + insets.top + insets.bottom); // frame.setVisible(true); // } catch (Throwable exception) { // System.err.println("nc.J.pub.ToftPanel 的 main() 中发生异常"); // exception.printStackTrace(System.out); // } // } private JPanel getClientJ() { return this; } private JButton getBtnReset() { if (ivjBtnReset == null) { try { ivjBtnReset = new JButton(); ivjBtnReset.setName("BtnReset"); ivjBtnReset.setText("重置"); ivjBtnReset.setBounds(137, 469, 116, 25); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjBtnReset; } private JButton getBtnImport() { if (ivjBtnImport == null) { try { ivjBtnImport = new JButton(); ivjBtnImport.setName("BtnImport"); ivjBtnImport.setText("导入"); ivjBtnImport.setBounds(504, 469, 116, 25); } catch (Throwable ivjExc) { handleException(ivjExc); } } return ivjBtnImport; } /** * Excel文件过滤类 * * @author jieely * */ class ExcelFileFilter extends javax.swing.filechooser.FileFilter { public boolean accept(File file) { if (file.isDirectory() || file.getPath().toLowerCase().endsWith(".xls")) return true; else return false; } public String getDescription() { return "数据文件(.xls)"; } } public void focusGained(FocusEvent focusevent) { } public void focusLost(FocusEvent focusevent) { }} private void initialize() { try { setName("EAIDataTrafficJ"); //setLayout(null); //如果注释了就是图2的效果,不注释就是图1的效果。 setSize(839, 464); add(getJPanel1(), getJPanel1().getName()); add(getJLabelSelect(), getJLabelSelect().getName()); add(getSrcFilePath(), getSrcFilePath().getName()); add(getBtnBrowseSrc(), getBtnBrowseSrc().getName()); add(getJLabelTitle(), getJLabelTitle().getName()); add(getBtnReset(), getBtnReset().getName()); add(getBtnImport(), getBtnImport().getName()); add(getTableDS(), getTableDS().getName()); add(getJScrollPane(), getJScrollPane().getName()); initConnections(); } catch (Throwable ivjExc) { handleException(ivjExc); } }谁能帮我看看? initialize()这个方法是JFrame的子类的么JFrame默认layout是BorderLayout,add控件时你不设置添加的位置默认就是中间也就是说你最后添加的会把前面添加的遮住 extends JPanel 我是继承了 那你的意思是 说 我先 把table放到 滚动面板里? 然后在把 滚动面板 放到 JPanel? 可以不这样做,public void add(Component comp, Object constraints)第二个参数可以填写Borderlayout.xxxx private void initialize() { try { setName("EAIDataTrafficJ"); //setLayout(null); //如果注释了就是图2的效果,不注释就是图1的效果。 setSize(839, 464); add(getJPanel1(), getJPanel1().getName()); add(getJLabelSelect(), getJLabelSelect().getName()); add(getSrcFilePath(), getSrcFilePath().getName()); add(getBtnBrowseSrc(), getBtnBrowseSrc().getName()); add(getJLabelTitle(), getJLabelTitle().getName()); add(getBtnReset(), getBtnReset().getName()); add(getBtnImport(), getBtnImport().getName()); add(getTableDS(), getTableDS().getName()); add(getJScrollPane(), getJScrollPane().getName()); initConnections(); } catch (Throwable ivjExc) { handleException(ivjExc); } }这个。。话说你这add方法自己写的?没见有第一个参数是Component第二个参数是String的用这个就行了addpublic void add(Component comp, Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用指定的 constraints 对象将组件添加到此容器的布局中。对于 addImpl(java.awt.Component, java.lang.Object, int) 来说,这是一种便捷的方法。 注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate,以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate 来提高效率。 参数:comp - 要添加的组件constraints - 表示此组件的布局约束的对象 JAVA静态方法的解析问题 关于jdbc连oracle的小问题 关于EJB3.0的实体 使用 SetTree 排序是遇到的小问题。。。。。。。 技术问题,急啊!!!请高手帮帮忙! 请问我要问ASP的问题, 应该把帖子放在哪个大类里. 请推荐几本java的入门书籍!谢谢! applet访问本地数据库异常。如何解决?!!!! 帮忙改错啊!! 请问内部类是一个编译器的语法糖吗? 求一个递归算法,在线等答案! 新手求解-有道坐标题??
这图 是我把 构造函数的 setLayout(null) 注释了 的效果。
//setLayout(null);3楼放源码
package nc.ui.rt.rt01;import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.File;import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;public class ImportInvCostUI extends JPanel implements FocusListener {
class IvjEventHandler implements ActionListener { final ImportInvCostUI this$0; public void actionPerformed(ActionEvent e) { } IvjEventHandler() {
this$0 = ImportInvCostUI.this;
}
} IvjEventHandler ivjEventHandler; private JLabel ivjJLabelSelect; private JLabel ivjJLabelTitle; private JPanel ivjJPanel1; private JTextArea ivjSrcFilePath; private JButton ivjBtnReset; private JButton ivjBtnBrowseSrc; private JButton ivjBtnImport; private String m_sysDate; private File file = null;
// 表格
private JTable ivtable;
// 滚动条
private JScrollPane scrollPane; // 接口实现
// private IRt01 irt01;
// private IRt01 getFn_itf() {
// if (irt01 == null)
// irt01 = (IRt01) NCLocator.getInstance().lookup(
// IRt01.class.getName());
// return irt01;
// }
public ImportInvCostUI() { ivjBtnBrowseSrc = null;
ivjEventHandler = new IvjEventHandler();
ivjJLabelSelect = null;
ivjJLabelTitle = null;
ivjJPanel1 = null;
ivjSrcFilePath = null;
ivjBtnReset = null;
ivjBtnImport = null;
m_sysDate = null;
ivtable = null;
scrollPane = null;
initialize();
// System.out.println((new StringBJlder("<<<<<<<<<<<<<<<<<")).append(
// m_sysDate).append(">>>>>>>>>>>>>>").toString());
} private JTable getTableDS() {
if (ivtable == null) {
String[] headers = { "公司编码", "部门编码", "存货编码", "客户编码", "结算方式编码",
"成本1", "成本2" };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
ivtable = new JTable(model);
ivtable.setName("TableDS");
ivtable.setBounds(39, 115, 750, 290);
ivtable.setRowHeight(20);
ivtable.setSelectionMode(0);
// ivtable.setPreferredScrollableViewportSize(new
// Dimension(550,30));
}
return ivtable;
} private JButton getBtnBrowseSrc() {
if (ivjBtnBrowseSrc == null) {
try {
ivjBtnBrowseSrc = new JButton();
ivjBtnBrowseSrc.setName("BtnBrowseSrc");
ivjBtnBrowseSrc.setText("浏览");
ivjBtnBrowseSrc.setBounds(617, 82, 80, 22);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnBrowseSrc;
} private JLabel getJLabelSelect() {
if (ivjJLabelSelect == null) {
try {
ivjJLabelSelect = new JLabel();
ivjJLabelSelect.setName("JLabelSelect");
ivjJLabelSelect.setFont(new Font("dialog", 1, 12));
ivjJLabelSelect.setText("选择文件");
ivjJLabelSelect.setBounds(39, 78, 69, 19);
ivjJLabelSelect.setForeground(new Color(102, 102, 153));
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJLabelSelect;
} private JLabel getJLabelTitle() {
if (ivjJLabelTitle == null) {
try {
ivjJLabelTitle = new JLabel();
ivjJLabelTitle.setName("JLabelTitle");
ivjJLabelTitle.setFont(new Font("dialog", 1, 22));
ivjJLabelTitle.setText("上传Excel存货成本");
ivjJLabelTitle.setBounds(248, 44, 307, 21);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJLabelTitle;
} private JPanel getJPanel1() {
if (ivjJPanel1 == null) {
try {
ivjJPanel1 = new JPanel();
ivjJPanel1.setName("JPanel1");
ivjJPanel1.setLayout(null);
ivjJPanel1.setBounds(-10, -1, 784, 1);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjJPanel1;
} private JTextArea getSrcFilePath() {
if (ivjSrcFilePath == null) {
try {
ivjSrcFilePath = new JTextArea();
ivjSrcFilePath.setName("srcFilePath");
ivjSrcFilePath.setBounds(116, 80, 475, 24);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjSrcFilePath;
} public String getTitle() {
return "存货成本导入";
} private void handleException(Throwable exception) {
System.out.println("--------- 未捕捉到的异常 ---------");
exception.printStackTrace(System.out);
} // 初始化监听
private void initConnections() throws Exception {
getBtnBrowseSrc().addActionListener(ivjEventHandler);
getBtnReset().addActionListener(ivjEventHandler);
getBtnImport().addActionListener(ivjEventHandler);
} private void initialize() {
try {
setName("EAIDataTrafficJ");
//setLayout(null);
setSize(839, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
add(getJScrollPane(), getJScrollPane().getName());
initConnections();
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
} private JScrollPane getJScrollPane() {
if (scrollPane == null) {
scrollPane = new JScrollPane(getTableDS());
// scrollPane.getViewport().add(ivtable);
// scrollPane.setBorder(new BevelBorder(BevelBorder.));
scrollPane.setName("scrollPane");
}
return scrollPane;
} // public static void main(String args[]) {
// try {
// JFrame frame = new JFrame();
// importsaleorderJ EAIDataTrafficJ = new importsaleorderJ();
// frame.setContentPane(EAIDataTrafficJ);
// frame.setSize(EAIDataTrafficJ.getSize());
// frame.addWindowListener(new WindowAdapter() {
//
// public void windowClosing(WindowEvent e) {
// System.exit(0);
// }
//
// });
// frame.show();
// Insets insets = frame.getInsets();
// frame.setSize(frame.getWidth() + insets.left + insets.right, frame
// .getHeight()
// + insets.top + insets.bottom);
// frame.setVisible(true);
// } catch (Throwable exception) {
// System.err.println("nc.J.pub.ToftPanel 的 main() 中发生异常");
// exception.printStackTrace(System.out);
// }
// } private JPanel getClientJ() {
return this;
} private JButton getBtnReset() {
if (ivjBtnReset == null) {
try {
ivjBtnReset = new JButton();
ivjBtnReset.setName("BtnReset");
ivjBtnReset.setText("重置");
ivjBtnReset.setBounds(137, 469, 116, 25);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnReset;
} private JButton getBtnImport() {
if (ivjBtnImport == null) {
try {
ivjBtnImport = new JButton();
ivjBtnImport.setName("BtnImport");
ivjBtnImport.setText("导入");
ivjBtnImport.setBounds(504, 469, 116, 25);
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
return ivjBtnImport;
} /**
* Excel文件过滤类
*
* @author jieely
*
*/
class ExcelFileFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File file) {
if (file.isDirectory()
|| file.getPath().toLowerCase().endsWith(".xls"))
return true;
else
return false;
} public String getDescription() {
return "数据文件(.xls)";
}
} public void focusGained(FocusEvent focusevent) {
} public void focusLost(FocusEvent focusevent) {
}
}
private void initialize() {
try {
setName("EAIDataTrafficJ");
//setLayout(null); //如果注释了就是图2的效果,不注释就是图1的效果。
setSize(839, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
add(getJScrollPane(), getJScrollPane().getName());
initConnections();
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}谁能帮我看看?
JFrame默认layout是BorderLayout,add控件时你不设置添加的位置默认就是中间
也就是说你最后添加的会把前面添加的遮住
extends JPanel 我是继承了
那你的意思是 说 我先 把table放到 滚动面板里? 然后在把 滚动面板 放到 JPanel?
public void add(Component comp,
Object constraints)
第二个参数可以填写Borderlayout.xxxx
try {
setName("EAIDataTrafficJ");
//setLayout(null); //如果注释了就是图2的效果,不注释就是图1的效果。
setSize(839, 464);
add(getJPanel1(), getJPanel1().getName());
add(getJLabelSelect(), getJLabelSelect().getName());
add(getSrcFilePath(), getSrcFilePath().getName());
add(getBtnBrowseSrc(), getBtnBrowseSrc().getName());
add(getJLabelTitle(), getJLabelTitle().getName());
add(getBtnReset(), getBtnReset().getName());
add(getBtnImport(), getBtnImport().getName());
add(getTableDS(), getTableDS().getName());
add(getJScrollPane(), getJScrollPane().getName());
initConnections();
} catch (Throwable ivjExc) {
handleException(ivjExc);
}
}
这个。。
话说你这add方法自己写的?没见有第一个参数是Component第二个参数是String的
用这个就行了
add
public void add(Component comp,
Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用指定的 constraints 对象将组件添加到此容器的布局中。对于 addImpl(java.awt.Component, java.lang.Object, int) 来说,这是一种便捷的方法。
注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate,以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate 来提高效率。
参数:
comp - 要添加的组件
constraints - 表示此组件的布局约束的对象