为了账号安全,请及时绑定邮箱和手机立即绑定

如何从另一个类调用 ComponentResizer 来调整 JTextFields 的大小?

如何从另一个类调用 ComponentResizer 来调整 JTextFields 的大小?

Qyouu 2022-01-12 14:21:03
我目前正在开发一个项目,我希望能够通过拖动鼠标而不是使用按钮来调整 JTextField 组件的大小,我遇到了 Rob Camick 的Resizing Components Class但我不知道如何实现/调用它我的课,希望有任何帮助,我的代码如下。提前致谢。import java.awt.BorderLayout;import java.awt.*;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentEvent;import java.awt.event.ComponentListener;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;import java.util.LinkedList;import java.io.*;import javax.swing.*;public class Sheet implements Runnable {LinkedList<Field> fieldList = new LinkedList<Field>();JFrame frame = new JFrame("Swing Testing...");public void run() {    Insets insets = frame.getInsets();    frame.setLayout(null);    JButton btn = new JButton("New");    JMenuBar menuBar = new JMenuBar();    JButton saveBtn = new JButton("Save");    JButton loadBtn = new JButton("Load");    JButton loadTempBtn = new JButton("Load From Template");    Dimension size = btn.getPreferredSize();    btn.setBounds(insets.left,insets.top,             size.width, size.height);    btn.setLocation(25, 50);    menuBar.setBounds(insets.left,insets.top,             size.width, size.height);    size = saveBtn.getPreferredSize();    saveBtn.setBounds(insets.left,insets.top,             size.width, size.height);    saveBtn.setLocation(500, 30);    size = loadBtn.getPreferredSize();    loadBtn.setBounds(insets.left,insets.top,             size.width, size.height);    loadBtn.setLocation(550, 30);    size = loadTempBtn.getPreferredSize();    loadTempBtn.setBounds(insets.left,insets.top,             size.width, size.height);    loadTempBtn.setLocation(600, 30);    btn.addActionListener(new ActionListener() {        @Override        public void actionPerformed(ActionEvent e) {            btn.setText("You Clicked me!");            FieldTypeFrame(e);        }    });
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

在ComponentResize被设计成只能工作使用空布局的面板上,因为你正在服用effectly组件的大小和位置的控制。


因此,假设您要将组件添加到空框架中,您将执行以下操作:


frame.setLayout(null);


JTextField textField = new JTextField(10);

textField.setSize( textField.getPreferredSize() );

textField.setLocation(100, 100);

frame.add(textField);


ComponentResizer cr = new ComponentResizer();

cr.registerComponent(textField);

当您尝试学习新的课程或概念时,请从简单的事情开始。您发布的代码太复杂了,无法学习如何使用此类。您只需要一个 JFrame 和一个 JTextField 来测试该类。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信