为什么JFrame中的JPanel中的组件setLocation()没有用呢?

网上有关“为什么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://nbtudor.com/nbtu/393.html

(18)
雁露的头像雁露签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 雁露的头像
    雁露 2025年09月06日

    我是碧途号的签约作者“雁露”

  • 雁露
    雁露 2025年09月06日

    本文概览:网上有关“为什么JFrame中的JPanel中的组件setLocation()没有用呢?”话题很是火热,小编也是针对为什么JFrame中的JPanel中的组件setLocati...

  • 雁露
    用户090604 2025年09月06日

    文章不错《为什么JFrame中的JPanel中的组件setLocation()没有用呢?》内容很有帮助