猿问

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

我目前正在开发一个项目,我希望能够通过拖动鼠标而不是使用按钮来调整 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);





        }

    });



Qyouu
浏览 144回答 1
1回答

墨色风雨

在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 来测试该类。
随时随地看视频慕课网APP

相关分类

Java
我要回答