在最后一个问题上,你们真的非常棒,指出了我的正确方向,而且我在这里还有一个原始问题的延伸: 如何设置一个JTable列作为string和sorting为双? 现在我已经使用自定义单元格渲染器将我的价格列格式化为$ ###,## 0.00,现在我也为单元格设置了一个JTextField编辑器。 单元格的编辑工作得很好,除了值更新的时候,在自定义渲染器中设置的数字格式不再像格式化单元格(我放弃$提交之后的编辑提交)。 即使在初始显示数据之后,这个渲染器是否应该渲染单元格? 我曾尝试使用以下运气: ((AbstractTableModel) table.getModel()).fireTableDataChanged(); 我希望这将迫使表重新validation和重新绘制使用自定义渲染器来渲染新值的单元格,但是这不幸的是没有工作… 我错过了什么…显然,但是什么?
当用户点击一个button时,我有一个旋转的图像。 但它不工作。 我希望看到图像逐渐旋转到90度,直到停止,但没有。 单击button时图像必须逐渐旋转90度。 我已经创build了一个SSCCE来展示问题。 请将CrossingPanelSSCE类中的图像replace为您select的任何图像。 只需将图像放在images文件夹中,并将其命名为images/railCrossing.JPG 。 RotateButtonSSCE import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JPanel; public class RotateButtonSSCE extends JPanel implements ActionListener{ private JButton rotate = new JButton("Rotate"); private VisualizationPanelSSCE vis = new VisualizationPanelSSCE(); public RotateButtonSSCE() { this.setBorder(BorderFactory.createTitledBorder("Rotate Button ")); this.rotate.addActionListener(this); this.add(rotate); } public void actionPerformed(ActionEvent ev) { vis.rotatetheCrossing(); […]
我使用GroupLayout来pipe理一些dynamic生成的数据input表单中的组件。 布局或多或less如此: *———————————————–* | label A | field A | | label B | field B | | label C | field C | *———————————————–* 我为水平布局使用了2个并行组,而垂直布局使用了单个顺序组。 大多数情况下,一切都很好。 我想将标签的最大宽度(只是JLabel实例)限制为父JFrame宽度的1/3。 如果JFrame是固定的大小,这将是微不足道的,但我必须处理它被resize。 我正在从JFrame拾取ComponentListener.componentResized()事件,但是当我收到这样的事件时,我有点卡住了。 我已经尝试了这个方法没有任何运气: public void componentResized(ComponentEvent e) { int maxW = parentFrame.getWidth() / 3; for (JLabel l : labels) { l.setMaximumSize( // have also tried setSize() and […]
我试图运行一个Java应用程序,但得到这个错误: java.lang.ClassNotFoundException: 冒号之后是缺失类的位置。 不过,我知道那个地方不存在,因为这个地方是其他地方的。 我如何更新该类的path? 这与class级路线有什么关系吗?
根据String#intern() ,如果在string池中findstring, intern方法应该从string池返回string,否则将在string池中添加一个新的string对象,并返回该string的引用。 所以我试过这个: String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern(); if ( s1 == s2 ){ System.out.println("s1 and s2 are same"); // 1. } if ( s1 == s3 ){ System.out.println("s1 and s3 are same" ); // 2. } 我期待着s1 and s3 are same因为s3是被打印的,而s1 and s2 are same不会被打印出来。 但结果是:两行都打印出来。 […]
我遇到了一个有趣的(非常令人沮丧的)问题,就是今天的equals()方法导致了我认为是一个经过良好testing的类崩溃,并导致了一个我花了很长时间追踪的bug。 为了完整起见,我没有使用IDE或debugging器 – 只是老式的文本编辑器和System.out的。 时间非常有限,这是一个学校项目。 无论如何 – 我正在开发一个可以包含Book对象的ArrayList的基本购物车。 为了实现Cart的addBook(),removeBook()和hasBook()方法,我想检查Book是否已经存在于购物车中。 所以我走了 – public boolean equals(Book b) { … // More code here – null checks if (b.getID() == this.getID()) return true; else return false; } 所有的testing都很好。 我创build了6个对象并填充数据。 做很多添加,删除,有()操作购物车,一切工作正常。 我读过,你可以有等于(TYPE var)或等于(Object o){(CAST)var},但是假设既然它在工作,那么没有太大的关系。 然后我碰到一个问题 – 我需要在Book类中创build一个Book对象,只有它的ID。 没有其他数据将被input到它。 基本上如下: public boolean hasBook(int i) { Book b = new Book(i); […]
我search了大部分的问题,但都没有解决我的问题。 我想通过从EditTextinput文本保存文件到内部存储。 然后,我想让相同的文件以stringforms返回input的文本,并保存到另一个稍后要使用的string中。 代码如下: package com.omm.easybalancerecharge; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.telephony.TelephonyManager; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText num = (EditText) findViewById(R.id.sNum); Button ch = (Button) findViewById(R.id.rButton); […]
我想在Java方法中将年数作为int返回。 我现在拥有的是getBirthDate()返回一个Date对象(出生date;-)): public int getAge() { long ageInMillis = new Date().getTime() – getBirthDate().getTime(); Date age = new Date(ageInMillis); return age.getYear(); } 但由于getYear()已弃用,我想知道是否有更好的方法来做到这一点? 我甚至不确定这个工作是否正确,因为我还没有到位的unit testing。
我遇到了一个问题,试图运行一个Android应用程序,直到第二个外部库添加到其构buildpath,工作正常。 自从添加了scoreninja jar之后,当我尝试运行应用程序时,我现在得到一个NoClassDefFoundError 。 这里是消息: 02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter 由于所有的构build脚本都是由Android工具(?)生成的,我不知道除了清理和重build或重新启动eclipse(我已经尝试了所有三种)之外,还有什么可以做的。 有谁知道我可以如何修改这个?
有一个简洁的方式来迭代一个stream,同时访问stream中的索引? String[] names = {"Sam","Pamela", "Dave", "Pascal", "Erik"}; List<String> nameList; Stream<Integer> indices = intRange(1, names.length).boxed(); nameList = zip(indices, stream(names), SimpleEntry::new) .filter(e -> e.getValue().length() <= e.getKey()) .map(Entry::getValue) .collect(toList()); 与那里给出的LINQ例子相比,这看起来相当令人失望 string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" }; var nameList = names.Where((c, index) => c.Length <= index + 1).ToList(); 有没有更简洁的方法? 此外,似乎拉链已经移动或被删除…