我正在建立一个欧姆法律应用程序.请记住这是我的第一个程序(没有教程)所以请善待=)以下是它运行时的样子:

组合框有计算伏特,计算欧姆等的选项……

中心面板设置为隐形,直到您从组合框中做出选择.这是您做出选择时的样子:

我面临的问题是,第一次进行选择时,只显示一个JLabel / JTextArea组合(每对组合在一个垂直框内的自己的面板上):

如果我单击组合框并再次进行相同的选择,它将正确显示.我无法弄清楚为什么它在第一次点击时行为不正确.也许我在构建GUI时采取了错误的方法.这是迄今为止的代码:

private JFrame frame;

private String[] choiceList = {"", "Calculate Volts", "Calculate Amps", "Calculate Ohms", "Calculate Watts"};

private JTextField textField_2;

private JPanel centerPanel;

private String volts = "Volts";

private String amps = "Amps";

private String ohms = "Ohms";

private String watts = "Watts";

private JLabel var1Label;

private JLabel var2Label;

private JLabel var3Label;

private JFormattedTextField var1TextField;

private JFormattedTextField var2TextField;

private JFormattedTextField var3TextField;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

GUI window = new GUI();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the application.

*/

public GUI() {

initialize();

}

/**

* Initialize the contents of the frame.

*/

private void initialize() {

frame = new JFrame();

frame.setTitle("BotsOne ElectriCalc");

frame.setBounds(100, 100, 450, 300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel northPanel = new JPanel();

northPanel.setIgnoreRepaint(true);

northPanel.setBorder(new LineBorder(Color.GRAY));

frame.getContentPane().add(northPanel, BorderLayout.NORTH);

JLabel choiceLabel = new JLabel("Please make a selection:");

northPanel.add(choiceLabel);

JComboBox choiceCombo = new JComboBox(choiceList);

northPanel.add(choiceCombo);

choiceCombo.addActionListener(new ChoiceComboListener());

JPanel southPanel = new JPanel();

southPanel.setIgnoreRepaint(true);

southPanel.setBorder(new LineBorder(Color.GRAY));

frame.getContentPane().add(southPanel, BorderLayout.SOUTH);

JLabel label = new JLabel("Answer:");

southPanel.add(label);

textField_2 = new JTextField();

textField_2.setColumns(10);

southPanel.add(textField_2);

centerPanel = new JPanel();

centerPanel.setVisible(false);

centerPanel.setBorder(new LineBorder(Color.GRAY));

frame.getContentPane().add(centerPanel, BorderLayout.CENTER);

Box centerPanelVertBox = Box.createVerticalBox();

centerPanelVertBox.setAlignmentX(Component.CENTER_ALIGNMENT);

centerPanel.add(centerPanelVertBox);

centerPanelVertBox.setVisible(true);

centerPanelVertBox.setBorder(null);

JLabel pleaseEnterLabel = new JLabel("Please enter 2 of 3 values:");

pleaseEnterLabel.setBorder(new EmptyBorder(15, 0, 10, 0));

pleaseEnterLabel.setAlignmentX(Component.CENTER_ALIGNMENT);

centerPanelVertBox.add(pleaseEnterLabel);

JPanel var1Panel = new JPanel();

centerPanelVertBox.add(var1Panel);

var1Label = new JLabel("xxx");

var1Label.setAlignmentX(Component.CENTER_ALIGNMENT);

var1Panel.add(var1Label);

var1TextField = new JFormattedTextField(NumberFormat.getInstance());

var1TextField.setColumns(10);

var1Panel.add(var1TextField);

Panel var2Panel = new Panel();

centerPanelVertBox.add(var2Panel);

var2Label = new JLabel("xxx");

var2Label.setAlignmentX(Component.CENTER_ALIGNMENT);

var2Panel.add(var2Label);

var2TextField = new JFormattedTextField(NumberFormat.getInstance());

var2TextField.setColumns(10);

var2Panel.add(var2TextField);

Panel var3Panel = new Panel();

centerPanelVertBox.add(var3Panel);

var3Label = new JLabel("xxx");

var3Label.setAlignmentX(Component.CENTER_ALIGNMENT);

var3Panel.add(var3Label);

var3TextField = new JFormattedTextField(NumberFormat.getInstance());

var3TextField.setColumns(10);

var3Panel.add(var3TextField);

Panel calculatePanel = new Panel();

centerPanelVertBox.add(calculatePanel);

JButton calculateButton = new JButton("Calculate");

calculatePanel.add(calculateButton);

}

public class ChoiceComboListener implements ActionListener { //combobox actionlistener

public void actionPerformed(ActionEvent ev) {

JComboBox cb = (JComboBox)ev.getSource();

String currentComboSelection = (String)cb.getSelectedItem();

if (currentComboSelection.equals(choiceList[1])) { //choice 1 (Calculate Volts)

centerPanel.setVisible(true);

var1Label.setText(amps);

var2Label.setText(ohms);

var3Label.setText(watts);

//centerPanel.repaint();

}

if (currentComboSelection.equals(choiceList[2])) { //choice 2 (Calculate Amps)

centerPanel.setVisible(true);

var1Label.setText(volts);

var2Label.setText(ohms);

var3Label.setText(watts);

centerPanel.repaint();

}

if (currentComboSelection.equals(choiceList[3])) {

centerPanel.setVisible(true);

var1Label.setText(volts);

var2Label.setText(amps);

var3Label.setText(watts);

}

if (currentComboSelection.equals(choiceList[4])) {

centerPanel.setVisible(true);

var1Label.setText(volts);

var2Label.setText(amps);

var3Label.setText(ohms);

}

if (currentComboSelection.equals(choiceList[0])) {

centerPanel.setVisible(false);

//centerPanel.repaint();

}

}

}

如果你看一下底部,有一个名为ChoiceComboListener的内部类,这是comboBox监听器,我试过玩弄repaint()和其他各种各样的东西,但我无法想出任何东西.任何帮助,指导或批评都表示赞赏.

java jtextfield设置不可见_java – JPanel设置为不可见,除默认值之外的组合框选择将其设置为可见,但组件丢失...相关推荐

  1. java读取合并单元格_Java POI常用方法,读取单元格的值,设置单元格格式,合并单元格,获取已合并的单元格,导出至本地等...

    一.设置单元格格式. 设置单元格边框.单元格背景颜色.单元格对齐方式.单元格字体,设置自动换行. /** Description: 设置单元格格式. * @author : ys. * @date : ...

  2. html下拉框怎么设置默认值,html下拉框怎么设置默认值-excel默认值,excel下拉框怎么设置默认值...

    步骤如下: 1.打开需要编辑的Excel工作表,如图所示.已知:科学技术分为"农业/林业,工业百技术,医学/医药/卫生,自然科学"这4个部分.现在度需要将这4部分归类到一个下拉列表 ...

  3. html文本框设置默认值,HTML input文本框设置和移除默认值

    这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: οnfοcus='if(this. ...

  4. mysql数据库字段默认值设为什么_为什么数据库字段需要设置默认值

    收到一只叮咚 mysql数据库默认对varchar的字段的值不就是空('')么,对数值默认是0,那还需要设置默认值的必要性何在?疑问的原因是没启用MySQL的严格模式(strictmode),很多快捷 ...

  5. java默认值_Java中八种基本数据类型的默认值

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...

  6. java循环遍历类属性_java循环遍历类属性 get 和set值方法

    //遍历sqspb类 成员为String类型 属性为空的全部替换为"/" Field[] fields = sqspb.getClass().getDeclaredFields() ...

  7. java组合框添加函数_Java Swing组合框选择并链接到其他组合框

    这是场景:我在数据库中有一个包含3列(id,name,age)的表.我创建了3个swing组合框和一个按钮,该按钮向数据库发送了一个" select语句",并用addItem(-) ...

  8. java mocked,JMockit 中被 Mocked 的对象属性及方法的默认值

    前脚研究完 Mockito 中被 Mocked 的对象属性及方法的默认值, 虽然目今更多的是拥抱着 Mockito, 但总有时对 JMockit 也会挤眉弄眼,谁叫 JMockit 无所不能呢!被 M ...

  9. Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转

    Java简单介绍 Java面向对象:一个面向对象的木匠关心的制作的椅子:这个木匠干了什么事情 非面向对象的木匠关心的是所使用的工具. 狗吃粮 面向对象 吃狗粮 非面向对象 Java与c++区别: 1. ...

最新文章

  1. 难忘的一天——装操作系统(四)
  2. VMware workstation中rhel安装VMware tools失败
  3. 不仅仅是手机,MWC现全球首例 5G NR 商用部署
  4. TQ210裸机编程(4)——按键(中断法)
  5. Html.DropDownListFor练习(2)
  6. centos下搭建Jenkins持续集成环境(安装jenkins)
  7. 字符串的地址_面试题:我有一批IPv6地址,你帮我想个办法来存储?
  8. C语言 const 和 define 区别 - C语言零基础入门教程
  9. [转载] Python中的switch语句的替代品
  10. 基于区块链技术的数据资产管理机制研究
  11. python 怎么将数组转为列表_Python怎么将文件读入列表?
  12. python编辑器是什么_python开发用什么编辑器
  13. 基于大数据的精准教学模式探究
  14. win10计算机性能设置,巧设置让Win10运行更流畅
  15. terser作为js代码压缩工具
  16. 这四款Windows上的高质量软件,装机必备,使用起来极度舒适
  17. 关于滚动条内子控件控制问题
  18. 分布式服务器中的数据安全问题及其解决办法
  19. via/route blockage/size blockage/wire/pin guide/pin blockage/partition
  20. 大学生考软考有用吗?这是我见过最好的回答

热门文章

  1. 【数理知识】二次型求导 矩阵求导
  2. 1.8 简单卷积网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. STM32 电机教程 33 - 无刷电机无感控制快速实现
  4. 【DIY】光剑(一):炽焰长剑的诞生
  5. 在Hammerstein非线性模型中,基于PSO的参数辨识系统
  6. 在SIMULINK实现各类优化类算法的仿真——粒子群算法、细菌觅食、
  7. 基于GRNN神经网络的数字预失真系统的FPGA实现
  8. C++ new和delete操作符
  9. 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
  10. mysql 忘记root密码的解决