网上有关“为什么JFrame中的JPanel中的组件setLocation()没有用呢?”话题很是火热,小编也是针对为什么JFrame中的JPanel中的组件setLocation()没有用呢?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
就是调用它自己的方法this.setLayout(a);
比如this.setLayout(new GridLayout());
this.setLayout(null);
tab里嵌JLayeredPane,然后嵌滚动条JScrollPane,最后嵌表格ActionTable。t_layer会填满tab,因此设不了大小,也不能设位置。
public class TestActionPanel extends JTabbedPane {
// TestActionPanel的其中一个成员函数
public void addTestScriptTab(TestSequence p_testSequence)
{
JTableUtil t_TableUtil = new JTableUtil();
t_TableUtil.setTableRows(p_testSequence);
ActionTable t_table = t_TableUtil.getJTable();
JScrollPane t_scroll = new JScrollPane(t_table);
t_scroll.setOpaque(false);
t_scroll.setSize(width-10, height-37);
t_scroll.setLocation(0, 0);
String t_scriptName = p_testSequence.getId();
t_scriptName = t_scriptName.substring(0, t_scriptName.lastIndexOf("."));
t_table.addMouseListener(new tableMouseHandler());
MyLayerdPanel t_layer = new MyLayerdPanel();
t_layer.add(t_scroll);
t_layer.setContainedScroll(t_scroll);
t_layer.setLayer(t_scroll, 0, -1);
p_testSequence.setLayerdPanel(t_layer);
this.insertTab(t_scriptName, null, t_layer, t_scriptName, 0);
this.setSelectedIndex(0);
}
}
public class MyLayerdPanel extends JLayeredPane {
JScrollPane m_scroll;
public void setContainedScroll(JScrollPane p_scroll)
{
m_scroll = p_scroll;
}
public JScrollPane getContainedScroll()
{
return m_scroll;
}
}
用网格布局写了个简单的例子!~想美观可使用GridBagLayout布局方式。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Login extends JFrame implements ActionListener {
private static final long serialVersionUID = -2890322100614715274L;
//文本框
private JTextField jtf = null;
private JPasswordField jpf = null;
private JLabel jl = null;
public Login() {
// TODO Auto-generated constructor stub
//获取容器
Container c = this.getContentPane();
//设置布局方式, 网格布局 3行2列
c.setLayout(new GridLayout(3, 2));
jtf = new JTextField();
jpf = new JPasswordField();
JButton b = new JButton("显示");
// 添加按钮监听
b.addActionListener(this);
jl = new JLabel();
c.add(new JLabel("用户名:"));
c.add(jtf);
c.add(new JLabel("密 码:"));
c.add(jpf);
c.add(b);
c.add(jl);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 事件监听方法.
* <p>Title: actionPerformed</p>
* <p>Description: </p>
* @param e
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//获取监听 组件的文本
String str = e.getActionCommand();
if("显示".equals(str)) {
jl.setText("用户名是:" + jtf.getText() + "\n密码是:" + new String(jpf.getPassword()));
}
}
public static void main(String[] args) {
new Login();
}
}
关于“为什么JFrame中的JPanel中的组件setLocation()没有用呢?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[雁露]投稿,不代表碧途号立场,如若转载,请注明出处:https://m.nbtudor.com/nbtu/393.html
评论列表(3条)
我是碧途号的签约作者“雁露”
本文概览:网上有关“为什么JFrame中的JPanel中的组件setLocation()没有用呢?”话题很是火热,小编也是针对为什么JFrame中的JPanel中的组件setLocati...
文章不错《为什么JFrame中的JPanel中的组件setLocation()没有用呢?》内容很有帮助