我目前正在開發一個項目,我希望能夠通過拖動鼠標而不是使用按鈕來調整 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 來測試該類。
添加回答
舉報
0/150
提交
取消