gpt4 book ai didi

java - 如何将指定字符串的大小设置为JTextField?

转载 作者:行者123 更新时间:2023-11-30 08:07:02 25 4
gpt4 key购买 nike

JPanel 中的

JTextFieldJDialog 中的 JTextField 不采用指定的大小。我尝试使用 BoxLayoutFlowLayout,但仍然没有达到所需的大小。 IE。我测量了 String example 的大小,并将该大小设置为 JTextField inputCat 的宽度,但是 inputCat 不采用这个大小,然后我调用它。如何正确设置指定String的大小到JTextField?这是我的代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FontMetrics;
import java.util.Calendar;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class DemoJDialog {

static private JInternalFrame internal;


public static void main(String[] args) {
new DemoJDialog();
}

public DemoJDialog() {
EventQueue.invokeLater(new Runnable() {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

internal = new JInternalFrame("Example", true, true, false, true);
internal.setLayout(new BorderLayout());
internal.setVisible(true);

JDesktopPane dp = new JDesktopPane();
dp.add(internal);

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(dp);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);


JTextField inputCat = new JTextField();


String example = new String("Some very-very-very-"
+ "very-very-very-very-very-very long string (really long )");
int heightInputCat = inputCat.getSize().height;
FontMetrics FN = internal.getFontMetrics(internal.getFont());
int widthInputCat = SwingUtilities.computeStringWidth(FN, example);
inputCat.setSize(widthInputCat, heightInputCat);



String[] comboString = { "Telecast", "Radiocast" };
JComboBox comboBox = new JComboBox(comboString);

Calendar now = Calendar.getInstance();
SpinnerModel modelSpinner = new SpinnerDateModel(now.getTime(),
null, null, Calendar.MONTH);
final JSpinner spinner = new JSpinner(modelSpinner);
spinner.setEditor(new JSpinner.DefaultEditor(spinner));

JPanel listPane = new JPanel();
listPane.setLayout(new BoxLayout(listPane, BoxLayout.X_AXIS));
listPane.add(comboBox);
listPane.add(Box.createHorizontalStrut(10));
listPane.add(inputCat);
listPane.add(Box.createHorizontalStrut(10));
listPane.add(spinner);

Object[] array = {
new JLabel ("Enter a new category:"),
listPane
};

JOptionPane pane = new JOptionPane(array, JOptionPane.PLAIN_MESSAGE,
JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = pane.createDialog(internal, "Enter a new category:");
dialog.setVisible(true);


}
});
}

}

最佳答案

这在这里工作得很好:

enter image description here

import java.awt.EventQueue;
import java.util.Calendar;
import javax.swing.*;

public class DemoJDialog {

public static void main(String[] args) {
new DemoJDialog();
}

public DemoJDialog() {
EventQueue.invokeLater(new Runnable() {
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public void run() {
String example = new String("Some very-very-very-"
+ "very-very-very-very-very-very "
+ "long string (really long)");
// create a textfield the size of the string!
JTextField inputCat = new JTextField(example);
inputCat.setCaretPosition(0);

String[] comboString = {"Telecast", "Radiocast"};
JComboBox comboBox = new JComboBox(comboString);

Calendar now = Calendar.getInstance();
SpinnerModel modelSpinner = new SpinnerDateModel(now.getTime(),
null, null, Calendar.MONTH);
final JSpinner spinner = new JSpinner(modelSpinner);
spinner.setEditor(new JSpinner.DefaultEditor(spinner));

JPanel listPane = new JPanel();
listPane.setLayout(new BoxLayout(listPane, BoxLayout.X_AXIS));
listPane.add(comboBox);
listPane.add(Box.createHorizontalStrut(10));
listPane.add(inputCat);
listPane.add(Box.createHorizontalStrut(10));
listPane.add(spinner);

Object[] array = {
new JLabel("Enter a new category:"),
listPane
};

JOptionPane pane = new JOptionPane(array, JOptionPane.PLAIN_MESSAGE,
JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = pane.createDialog(listPane, "Enter a new category:");
dialog.setVisible(true);
}
});
}
}

关于java - 如何将指定字符串的大小设置为JTextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com