- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 JDialog
框中有一个 JTabbedPane
,它在 Pane 中包含的所有 JPanels
上使用 GridBagLayout
。在显示的第一个面板上有一个 JTextArea
(descTxt
),可以在其中输入电影说明。当您在 JTextArea 中输入大量文本时
看起来一切都很好,直到您单击面板上不是组件的任何位置(空白的灰色空间),然后所有文本字段和文本 Pane 都会缩小到看起来大小为 0 的大小。
以下是一些要粘贴和测试的示例文本:
During a manned mission to Mars, Astronaut Mark Watney is presumed dead after a fierce storm and left behind by his crew. But Watney has survived and finds himself stranded and alone on the hostile planet. With only meager supplies, he must draw upon his ingenuity, wit and spirit to subsist and find a way to signal to Earth that he is alive.
这是我的代码的可运行示例:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
*
* @author Chris
*/
public class AdminWindow extends JDialog implements ActionListener {
private JPanel adminPanel1, adminPanel2, adminPanel3;
private JTabbedPane tabPane;
private GridBagConstraints g1, g2, g3;
private JLabel idLbl, showLbl, descLbl, ageLbl, imgLbl, timeLbl, screenLbl,
stanLbl, vipLbl, idLbl1, showLbl1, descLbl1, ageLbl1, imgLbl1, imgName;
private JTextField idTxt, showTxt, imgTxt, timeTxt, stanTxt, vipTxt,
idTxt1, showTxt1, imgTxt1;
private JTextArea descTxt, descTxt1;
private JComboBox ageCb, ageCb1, screenCb, timeCb, showingCb;
private JScrollPane descTxtPane, descTxtPane1;
private ArrayList<String> screenList, timeList, showingList;
private DefaultComboBoxModel screenModel, timeModel, showingModel;
private JButton submit, clear, seatSubmit, seatClear, addBtn, subBtn,
submit1, clear1, imgBtn;
private double stanPrice, vipPrice;
private String stanPriceString, vipPriceString, priceExpression, imgString;
private Pattern p;
private File dest, chosenFile;
public AdminWindow() {
//frame properties
super(new JFrame("Admin Panel"));
setTitle("Admin Panel");
//setSize(Dimensions.getScreenWidth() - 100, Dimensions.getScreenHeight() - 100);
setAlwaysOnTop(true);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
//regular expression validations
priceExpression = "[0-9]{1,2}[.]{1}[0-9]{2}";
p = Pattern.compile(priceExpression);
//panel dec
tabPane = new JTabbedPane();
adminPanel1 = new JPanel();
adminPanel2 = new JPanel();
adminPanel3 = new JPanel();
g1 = new GridBagConstraints();
g2 = new GridBagConstraints();
g3 = new GridBagConstraints();
//label dec
idLbl = new JLabel("Film ID");
showLbl = new JLabel("Film Name");
descLbl = new JLabel("Film Description");
ageLbl = new JLabel("Age Rating");
imgLbl = new JLabel("Image");
idLbl1 = new JLabel("Film ID");
showLbl1 = new JLabel("Film Name");
descLbl1 = new JLabel("Film Description");
ageLbl1 = new JLabel("Age Rating");
imgLbl1 = new JLabel("Image");
timeLbl = new JLabel("Showing Times");
screenLbl = new JLabel("Screen Number");
stanLbl = new JLabel("Standard Ticket Cost (£)");
vipLbl = new JLabel("VIP Ticket Cost (£)");
imgName = new JLabel("filename.jpg");
//label properties
imgName.setPreferredSize(new Dimension(100, 20));
//txttfield dec
idTxt = new JTextField(4);
showTxt = new JTextField(30);
descTxt = new JTextArea(4, 30);
descTxtPane = new JScrollPane(descTxt, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
imgTxt = new JTextField();
idTxt1 = new JTextField(4);
showTxt1 = new JTextField(30);
descTxt1 = new JTextArea(4, 30);
descTxtPane1 = new JScrollPane(descTxt1, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
imgTxt1 = new JTextField();
timeTxt = new JTextField(4);
stanTxt = new JTextField(4);
vipTxt = new JTextField(4);
//textfield properties
idTxt1.setEditable(false);
descTxt.setWrapStyleWord(true);
descTxt.setLineWrap(true);
//drop-down dec
ageCb = new JComboBox();
ageCb1 = new JComboBox();
screenCb = new JComboBox();
timeCb = new JComboBox();
showingCb = new JComboBox();
//dropdown properties
timeCb.setPreferredSize(new Dimension(60, 23));
//buttons
submit = new JButton("Submit");
clear = new JButton("Clear");
submit1 = new JButton("Submit");
clear1 = new JButton("Clear");
seatSubmit = new JButton("Submit");
seatClear = new JButton("Show Current");
addBtn = new JButton("+");
subBtn = new JButton("-");
imgBtn = new JButton("Browse..");
//button properties
addBtn.setFocusPainted(false);
subBtn.setFocusPainted(false);
addBtn.setMargin(new Insets(0, 5, 0, 5));
subBtn.setMargin(new Insets(0, 5, 0, 5));
//listeners
submit.addActionListener(this);
clear.addActionListener(this);
seatSubmit.addActionListener(this);
seatClear.addActionListener(this);
addBtn.addActionListener(this);
subBtn.addActionListener(this);
imgBtn.addActionListener(this);
//fill price text fields with existing prices
defaultForm();
//add items to jcombobox
ageCb.addItem("U");
ageCb.addItem("12A");
ageCb.addItem("15");
ageCb.addItem("18");
ageCb1.addItem("U");
ageCb1.addItem("12A");
ageCb1.addItem("15");
ageCb1.addItem("18");
//panel properties
adminPanel1.setLayout(new GridBagLayout());
adminPanel2.setLayout(new GridBagLayout());
adminPanel3.setLayout(new GridBagLayout());
adminPanel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "New Showing"));
adminPanel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Seat Prices"));
adminPanel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Edit Showing"));
//ading panels to tabbed pane
tabPane.addTab("Add Showings", null, adminPanel1, "Add new showings & showing times");
tabPane.addTab("Seat Prices", null, adminPanel2, "Change seat prices");
tabPane.addTab("Edit Showing", null, adminPanel3, "Edit existing showing");
//-----adding components to pane--------------------------------------!
g1.gridx = 0;
g1.gridy = 0;
g1.insets = new Insets(10, 0, 0, 10);
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(idLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(idTxt, g1);
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(showLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
adminPanel1.add(showTxt, g1);
g1.gridwidth = 1;
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(descLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
adminPanel1.add(descTxtPane, g1);
g1.gridwidth = 1;
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(ageLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(ageCb, g1);
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(imgLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 2;
adminPanel1.add(imgBtn, g1);
g1.gridx = 3;
adminPanel1.add(imgName, g1);
g1.gridwidth = 1;
g1.gridy++;
g1.gridx = 0;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(screenLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(screenCb, g1);
g1.gridx--;
g1.gridy++;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(timeLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(timeTxt, g1);
g1.gridx++;
adminPanel1.add(addBtn, g1);
g1.gridx++;
adminPanel1.add(timeCb, g1);
g1.gridx++;
adminPanel1.add(subBtn, g1);
//buttons
g1.gridy++;
g1.gridx = 0;
g1.insets = new Insets(10, 0, 10, 10); //top, right, bottom, left
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(clear, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
adminPanel1.add(submit, g1);
g1.gridwidth = 1;
//------adding components to panel2-----------------------------------!
//left
g2.gridx = 0;
g2.gridy = 0;
g2.insets = new Insets(10, 10, 0, 10);
g2.anchor = GridBagConstraints.LINE_END;
adminPanel2.add(stanLbl, g2);
g2.gridy++;
adminPanel2.add(vipLbl, g2);
g2.gridy++;
adminPanel2.add(seatClear, g2);
//right
g2.gridy = 0;
g2.gridx++;
g2.anchor = GridBagConstraints.LINE_START;
adminPanel2.add(stanTxt, g2);
g2.gridy++;
adminPanel2.add(vipTxt, g2);
g2.gridy++;
adminPanel2.add(seatSubmit, g2);
//-----adminpanel3-----------------------------------------------------
//adding components to panel1
g3.gridx = 1;
g3.gridy = 0;
g3.insets = new Insets(10, 0, 0, 10);
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
adminPanel3.add(showingCb, g3);
g3.gridwidth = 1;
g3.gridx--;
g3.gridy++;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(idLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
adminPanel3.add(idTxt1, g3);
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(showLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 5;
adminPanel3.add(showTxt1, g3);
g3.gridwidth = 1;
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(descLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
adminPanel3.add(descTxtPane1, g3);
g3.gridwidth = 1;
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(ageLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
adminPanel3.add(ageCb1, g3);
g3.gridy++;
g3.gridx--;
//buttons
g3.gridy++;
g3.gridx = 0;
g3.insets = new Insets(10, 0, 10, 10); //top, right, bottom, left
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(clear1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
adminPanel3.add(submit1, g3);
g3.gridwidth = 1;
//adding tabbed pane to frame
this.add(tabPane);
this.pack();
//visibility
setVisible(true);
tabPane.setVisible(true);
//actionlisteners
}
public static void main(String[] args) {
AdminWindow test = new AdminWindow();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == imgBtn) {
//--JFileChooser, ugly but better to use--
String userDir = System.getProperty("user.home");
JFileChooser chooser = new JFileChooser(userDir+"/Desktop");
int choice = chooser.showDialog(this, "Choose");
if (choice != JFileChooser.APPROVE_OPTION) {
return;
}
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
chooser.setAcceptAllFileFilterUsed(false);
chooser.addChoosableFileFilter(filter);
chosenFile = chooser.getSelectedFile();
imgName.setText(chosenFile.getName());
dest = new File(System.getProperty("user.dir") + "/src/iegroup/resources", chosenFile.getName());
imgString = "resources/" + chosenFile.getName();
System.out.println(dest.toPath());
}
if (e.getSource() == submit) {
if (e.getSource() == clear ){
}
if (e.getSource() == seatSubmit) {
}
}
if (e.getSource() == seatClear) {
defaultForm();
}
if (e.getSource() == addBtn) {
timeModel.addElement(timeTxt.getText());
timeList.add(timeTxt.getText());
}
if (e.getSource() == subBtn) {
timeModel.removeElement(timeCb.getSelectedItem());
timeList.remove(timeCb.getSelectedItem());
}
}
private void defaultForm() {
stanPriceString = String.format("%.2f", stanPrice);
vipPriceString = String.format("%.2f", vipPrice);
stanTxt.setText(stanPriceString);
vipTxt.setText(vipPriceString);
}
public void showValidationPrompt(String message) {
JFrame validFrame = new JFrame();
validFrame.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(validFrame, message, "Invalid input", JOptionPane.CLOSED_OPTION);
}
public void showSuccessPrompt(String message) {
JFrame errorFrame = new JFrame();
errorFrame.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(errorFrame, message, "Success", JOptionPane.CLOSED_OPTION);
}
}
请帮忙。这非常令人困惑,我似乎无法在任何地方找到解决方案。
最佳答案
所以,问题似乎是 setResizing(false)
和 ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
的组合(好吧,我只是讨厌不可调整大小的窗口)。
发生的情况是,当您填充JTextArea
时,它会将JScrollPane
“添加”到已经“打包”的窗口中,因此组件的大小发生了变化,然后当容器被重新验证,不再有足够的空间来将所有字段按其首选大小打包,因此它们的大小被调整为最小大小,通常为 0x0
或足够接近。
您可以采取一些措施来帮助事情顺利进行。您可以使用 GridBagConstraints#fill
并使用 GridBagConstraints.HORIZONTAL
作为文本字段,使用 GridBagConstraints.BOTH
作为文本区域,这将执行以下操作无论单元格空间何时小于组件的首选大小,都允许字段“填充”并占据列/行的可用空间。
您可能还会发现将 GridBagConstraints#weightx/y
改为 1
会有帮助。
如果您遇到真正的麻烦,您可以简单地在 JScrollPane
中使用 ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
,虽然不漂亮,但会添加到 JScrollBar 中
窗口打包时 JScrollPane
的大小
已更新
所以,基本上,我最终对 JScrollPane
和 JTextArea 使用了
sfill
和 weightx/y
的组合
g1.fill = GridBagConstraints.BOTH;
g1.weightx = 1;
g1.weighty = 1;
adminPanel1.add(descTxtPane, g1);
g1.fill = GridBagConstraints.NONE;
g1.weightx = 0;
g1.weighty = 0;
对于JTextField
,我刚刚使用了fill
,它似乎已经稳定了事情......
g1.fill = GridBagConstraints.HORIZONTAL;
adminPanel1.add(idTxt, g1);
g1.fill = GridBagConstraints.NONE;
这导致了类似...
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.filechooser.FileNameExtensionFilter;
public class AdminWindow extends JDialog implements ActionListener {
private JPanel adminPanel1, adminPanel2, adminPanel3;
private JTabbedPane tabPane;
private GridBagConstraints g1, g2, g3;
private JLabel idLbl, showLbl, descLbl, ageLbl, imgLbl, timeLbl, screenLbl,
stanLbl, vipLbl, idLbl1, showLbl1, descLbl1, ageLbl1, imgLbl1, imgName;
private JTextField idTxt, showTxt, imgTxt, timeTxt, stanTxt, vipTxt,
idTxt1, showTxt1, imgTxt1;
private JTextArea descTxt, descTxt1;
private JComboBox ageCb, ageCb1, screenCb, timeCb, showingCb;
private JScrollPane descTxtPane, descTxtPane1;
private ArrayList<String> screenList, timeList, showingList;
private DefaultComboBoxModel screenModel, timeModel, showingModel;
private JButton submit, clear, seatSubmit, seatClear, addBtn, subBtn,
submit1, clear1, imgBtn;
private double stanPrice, vipPrice;
private String stanPriceString, vipPriceString, priceExpression, imgString;
private Pattern p;
private File dest, chosenFile;
public AdminWindow() {
//frame properties
setTitle("Admin Panel");
//setSize(Dimensions.getScreenWidth() - 100, Dimensions.getScreenHeight() - 100);
setAlwaysOnTop(true);
// setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
//regular expression validations
priceExpression = "[0-9]{1,2}[.]{1}[0-9]{2}";
p = Pattern.compile(priceExpression);
//panel dec
tabPane = new JTabbedPane();
adminPanel1 = new JPanel();
adminPanel2 = new JPanel();
adminPanel3 = new JPanel();
g1 = new GridBagConstraints();
g2 = new GridBagConstraints();
g3 = new GridBagConstraints();
//label dec
idLbl = new JLabel("Film ID");
showLbl = new JLabel("Film Name");
descLbl = new JLabel("Film Description");
ageLbl = new JLabel("Age Rating");
imgLbl = new JLabel("Image");
idLbl1 = new JLabel("Film ID");
showLbl1 = new JLabel("Film Name");
descLbl1 = new JLabel("Film Description");
ageLbl1 = new JLabel("Age Rating");
imgLbl1 = new JLabel("Image");
timeLbl = new JLabel("Showing Times");
screenLbl = new JLabel("Screen Number");
stanLbl = new JLabel("Standard Ticket Cost (£)");
vipLbl = new JLabel("VIP Ticket Cost (£)");
imgName = new JLabel("filename.jpg");
//label properties
// imgName.setPreferredSize(new Dimension(100, 20));
//txttfield dec
idTxt = new JTextField(4);
showTxt = new JTextField(30);
descTxt = new JTextArea(4, 30);
descTxtPane = new JScrollPane(descTxt, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
imgTxt = new JTextField();
idTxt1 = new JTextField(4);
showTxt1 = new JTextField(30);
descTxt1 = new JTextArea(4, 30);
descTxtPane1 = new JScrollPane(descTxt1, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
imgTxt1 = new JTextField();
timeTxt = new JTextField(4);
stanTxt = new JTextField(4);
vipTxt = new JTextField(4);
//textfield properties
idTxt1.setEditable(false);
descTxt.setWrapStyleWord(true);
descTxt.setLineWrap(true);
//drop-down dec
ageCb = new JComboBox();
ageCb1 = new JComboBox();
screenCb = new JComboBox();
timeCb = new JComboBox();
showingCb = new JComboBox();
//dropdown properties
// timeCb.setPreferredSize(new Dimension(60, 23));
//buttons
submit = new JButton("Submit");
clear = new JButton("Clear");
submit1 = new JButton("Submit");
clear1 = new JButton("Clear");
seatSubmit = new JButton("Submit");
seatClear = new JButton("Show Current");
addBtn = new JButton("+");
subBtn = new JButton("-");
imgBtn = new JButton("Browse..");
//button properties
addBtn.setFocusPainted(false);
subBtn.setFocusPainted(false);
addBtn.setMargin(new Insets(0, 5, 0, 5));
subBtn.setMargin(new Insets(0, 5, 0, 5));
//listeners
submit.addActionListener(this);
clear.addActionListener(this);
seatSubmit.addActionListener(this);
seatClear.addActionListener(this);
addBtn.addActionListener(this);
subBtn.addActionListener(this);
imgBtn.addActionListener(this);
//fill price text fields with existing prices
defaultForm();
//add items to jcombobox
ageCb.addItem("U");
ageCb.addItem("12A");
ageCb.addItem("15");
ageCb.addItem("18");
ageCb1.addItem("U");
ageCb1.addItem("12A");
ageCb1.addItem("15");
ageCb1.addItem("18");
//panel properties
adminPanel1.setLayout(new GridBagLayout());
adminPanel2.setLayout(new GridBagLayout());
adminPanel3.setLayout(new GridBagLayout());
adminPanel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "New Showing"));
adminPanel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Seat Prices"));
adminPanel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Edit Showing"));
//ading panels to tabbed pane
tabPane.addTab("Add Showings", null, adminPanel1, "Add new showings & showing times");
tabPane.addTab("Seat Prices", null, adminPanel2, "Change seat prices");
tabPane.addTab("Edit Showing", null, adminPanel3, "Edit existing showing");
//-----adding components to pane--------------------------------------!
g1.gridx = 0;
g1.gridy = 0;
g1.insets = new Insets(10, 0, 0, 10);
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(idLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.fill = GridBagConstraints.HORIZONTAL;
adminPanel1.add(idTxt, g1);
g1.fill = GridBagConstraints.NONE;
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(showLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
g1.fill = GridBagConstraints.HORIZONTAL;
adminPanel1.add(showTxt, g1);
g1.fill = GridBagConstraints.NONE;
g1.gridwidth = 1;
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(descLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
g1.fill = GridBagConstraints.BOTH;
g1.weightx = 1;
g1.weighty = 1;
adminPanel1.add(descTxtPane, g1);
g1.fill = GridBagConstraints.NONE;
g1.weightx = 0;
g1.weighty = 0;
g1.gridwidth = 1;
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(ageLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(ageCb, g1);
g1.gridy++;
g1.gridx--;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(imgLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 2;
adminPanel1.add(imgBtn, g1);
g1.gridx = 3;
adminPanel1.add(imgName, g1);
g1.gridwidth = 1;
g1.gridy++;
g1.gridx = 0;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(screenLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
adminPanel1.add(screenCb, g1);
g1.gridx--;
g1.gridy++;
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(timeLbl, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.fill = GridBagConstraints.HORIZONTAL;
adminPanel1.add(timeTxt, g1);
g1.fill = GridBagConstraints.NONE;
g1.gridx++;
adminPanel1.add(addBtn, g1);
g1.gridx++;
adminPanel1.add(timeCb, g1);
g1.gridx++;
adminPanel1.add(subBtn, g1);
//buttons
g1.gridy++;
g1.gridx = 0;
g1.insets = new Insets(10, 0, 10, 10); //top, right, bottom, left
g1.anchor = GridBagConstraints.LINE_END;
adminPanel1.add(clear, g1);
g1.gridx++;
g1.anchor = GridBagConstraints.LINE_START;
g1.gridwidth = 4;
adminPanel1.add(submit, g1);
g1.gridwidth = 1;
//------adding components to panel2-----------------------------------!
//left
g2.gridx = 0;
g2.gridy = 0;
g2.insets = new Insets(10, 10, 0, 10);
g2.anchor = GridBagConstraints.LINE_END;
adminPanel2.add(stanLbl, g2);
g2.gridy++;
adminPanel2.add(vipLbl, g2);
g2.gridy++;
adminPanel2.add(seatClear, g2);
//right
g2.gridy = 0;
g2.gridx++;
g2.anchor = GridBagConstraints.LINE_START;
g2.fill = GridBagConstraints.HORIZONTAL;
adminPanel2.add(stanTxt, g2);
g2.fill = GridBagConstraints.NONE;
g2.gridy++;
g2.fill = GridBagConstraints.HORIZONTAL;
adminPanel2.add(vipTxt, g2);
g2.fill = GridBagConstraints.NONE;
g2.gridy++;
adminPanel2.add(seatSubmit, g2);
//-----adminpanel3-----------------------------------------------------
//adding components to panel1
g3.gridx = 1;
g3.gridy = 0;
g3.insets = new Insets(10, 0, 0, 10);
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
adminPanel3.add(showingCb, g3);
g3.gridwidth = 1;
g3.gridx--;
g3.gridy++;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(idLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.fill = GridBagConstraints.HORIZONTAL;
adminPanel3.add(idTxt1, g3);
g3.fill = GridBagConstraints.NONE;
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(showLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 5;
g3.fill = GridBagConstraints.HORIZONTAL;
adminPanel3.add(showTxt1, g3);
g3.fill = GridBagConstraints.NONE;
g3.gridwidth = 1;
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(descLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
g3.fill = GridBagConstraints.BOTH;
g3.weightx = 1;
g3.weighty = 1;
adminPanel3.add(descTxtPane1, g3);
g3.fill = GridBagConstraints.NONE;
g3.weightx = 0;
g3.weighty = 0;
g3.gridwidth = 1;
g3.gridy++;
g3.gridx--;
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(ageLbl1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
adminPanel3.add(ageCb1, g3);
g3.gridy++;
g3.gridx--;
//buttons
g3.gridy++;
g3.gridx = 0;
g3.insets = new Insets(10, 0, 10, 10); //top, right, bottom, left
g3.anchor = GridBagConstraints.LINE_END;
adminPanel3.add(clear1, g3);
g3.gridx++;
g3.anchor = GridBagConstraints.LINE_START;
g3.gridwidth = 4;
adminPanel3.add(submit1, g3);
g3.gridwidth = 1;
//adding tabbed pane to frame
this.add(tabPane);
this.pack();
//visibility
setVisible(true);
tabPane.setVisible(true);
//actionlisteners
}
public static void main(String[] args) {
AdminWindow test = new AdminWindow();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == imgBtn) {
//--JFileChooser, ugly but better to use--
String userDir = System.getProperty("user.home");
JFileChooser chooser = new JFileChooser(userDir + "/Desktop");
int choice = chooser.showDialog(this, "Choose");
if (choice != JFileChooser.APPROVE_OPTION) {
return;
}
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
chooser.setAcceptAllFileFilterUsed(false);
chooser.addChoosableFileFilter(filter);
chosenFile = chooser.getSelectedFile();
imgName.setText(chosenFile.getName());
dest = new File(System.getProperty("user.dir") + "/src/iegroup/resources", chosenFile.getName());
imgString = "resources/" + chosenFile.getName();
System.out.println(dest.toPath());
}
if (e.getSource() == submit) {
if (e.getSource() == clear) {
}
if (e.getSource() == seatSubmit) {
}
}
if (e.getSource() == seatClear) {
defaultForm();
}
if (e.getSource() == addBtn) {
timeModel.addElement(timeTxt.getText());
timeList.add(timeTxt.getText());
}
if (e.getSource() == subBtn) {
timeModel.removeElement(timeCb.getSelectedItem());
timeList.remove(timeCb.getSelectedItem());
}
}
private void defaultForm() {
stanPriceString = String.format("%.2f", stanPrice);
vipPriceString = String.format("%.2f", vipPrice);
stanTxt.setText(stanPriceString);
vipTxt.setText(vipPriceString);
}
public void showValidationPrompt(String message) {
JFrame validFrame = new JFrame();
validFrame.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(validFrame, message, "Invalid input", JOptionPane.CLOSED_OPTION);
}
public void showSuccessPrompt(String message) {
JFrame errorFrame = new JFrame();
errorFrame.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(errorFrame, message, "Success", JOptionPane.CLOSED_OPTION);
}
}
关于java - 当向 JTextArea 输入大量文本时,JTextFields 和 JTextArea 会缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833940/
我有一个简单的 GUI,其中有一个 JTextArea。我创建了一个方法来从用户获取消息,另一个方法将文本附加到文本区域,如下所示 Message m = new Message(); ... pri
我正在使用 JList,并且尝试对单元格使用 JTextAreas(实现 ListCellRenderer)。它不起作用。这些单元格仅显示 ListCellRenderer.toString() 而不
此代码计算 JTextArea 的每一行并添加行数 左 JTextPane import java.awt.BorderLayout; import java.awt.Color; import ja
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我必须将一个jtextarea的内容复制到另一个jtextarea。怎么办?我已经做了以下操作:但是这个程序正在将一个jtext区域的文本逐个字符写入另一个jtext区域。我希望它在用户按下回车键时复
在我的 GUI 中,JScrollPane 中有一个附加到容器的 JTextArea。 ta = new JTextArea(); jsp = new JScrollP
我正在编写一些测试代码来练习 OOP,我想将 JTextArea 从“writeToArea”附加到定义和初始化 JTextArea 的“initialize”方法。我已经尝试直接调用“输出”变量,但
JComboBox cBox = new JComboBox(); cBox.addItem("Food"); String x = "Food"; cBox.addItem("Shi
我正在尝试将一个 JTextArea 放在 GUI 中的另一个 JTextArea 旁边 我正在为数据库编写 GUI,并希望将每列的数据放在不同的 JTextArea 中。这将使我的 GUI 看起来更
这是一个带有 JTextarea 的弹出 Jpanel,但我有一个问题。当我将鼠标移到 JTextarea 上时,它会闪烁。为什么会出现这种情况? 在 Debug模式下,鼠标移动会生成 mouseEx
我有一个类将输出显示到 JTextArea 中。意味着成功运行后,它将在文本区域中显示输出。 我还有一个主类,它将类与几个按钮组合在一起,以启动特定类中代码的执行。这个主类创建了一个带有几个按钮的 G
我的问题在于我的 DocumentLister AreaListener。我似乎无法弄清楚如何将用户输入的文本传递到一个 JTextArea 中进行转换,并将其返回到另一个 JTextArea。 该程
我有一个对象ReminderGUI其中有 JTextArea field 。 ReminderGUI代表一个可以保存和显示提醒的应用程序。当getReminderButton单击我希望应用程序找到之前
我目前正在使用 Swing 开发控制台窗口。它基于 JTextArea 并且像普通命令行一样工作。您在一行中键入一条命令,然后按回车键。在下一行中,显示了输出,在该输出下,您可以编写下一条命令。 现在
我开发了一个 Swing GUI,其中我尝试使用按钮使用另一个文本区域中的文本填充文本区域。 代码: private void jButton1ActionPerformed(java.awt.eve
当我制作时,我有一个包含 JPanel 的小型 GUI,其中有 JTextArea 和 JLabel panel1.setLayout(null); 我可以完成所需的位置,但 JTextArea 消失
我在 JDialog 框中有一个 JTabbedPane,它在 Pane 中包含的所有 JPanels 上使用 GridBagLayout 。在显示的第一个面板上有一个 JTextArea (desc
我搜索了答案,但我找到的只是解决方法,而不是原因,所以我问这个问题: 我是 GUI 编程的新手。在练习一些有关关键事件处理的代码时,我遇到了一个示例,该示例在 JFrame 中包含一个 JTextAr
将有 91 个文本区域,每个区域都显示一个值。我试图找到一种更有效的方法来解决这个问题,而不是只是盲目地添加 JTextAreas 并尝试管理 91 个文本区域中每个区域的实例化名称。 我愿意接受有关
private JPanel contentPane; public Driver() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
我是一名优秀的程序员,十分优秀!