제 문제는 JavaFX TableView에서 SHA-256으로 암호화 된 문자열을 표시 할 수 없다는 것입니다. 그것은 정상적인 문자열로 작동합니다. 여기 내 스크램블 방법에 대한 내 코드.JavaFX 테이블 뷰에 스크램블 된 문자열이 표시되지 않습니다.
private String scrambleName(String name, String surname)
{
MessageDigest messageDigest;
String cryptedName;
StringBuilder builder = new StringBuilder();
builder.append(name);
builder.append(" ");
builder.append(surname);
String fullName = builder.toString();
try
{
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(fullName.getBytes());
cryptedName = new String(messageDigest.digest());
return cryptedName;
} catch (NoSuchAlgorithmException ex)
{
Logger.getLogger(Scrambler.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
이 메서드는 내 스크램블 된 투표 객체의 문자열을 반환합니다.
public class ScrambledVote
{
private int key;
private String scrambledName;
private int age;
private String party;
public ScrambledVote(int key, String scrambledName, int age, String party)
{
this.key = key;
this.scrambledName = scrambledName;
this.age = age;
this.party = party;
}
//Getter Setter
파일에서 데이터를로드합니다. 명령 행 출력이 정상적으로 작동합니다. 그러나 TableView 예외가 throw됩니다.
Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException: 0
at com.sun.javafx.font.directwrite.DWGlyphLayout.getIndices(DWGlyphLayout.java:198)
at com.sun.javafx.font.directwrite.DWGlyphLayout.renderShape(DWGlyphLayout.java:401)
at com.sun.javafx.font.directwrite.DWGlyphLayout.layout(DWGlyphLayout.java:154)
at com.sun.javafx.text.PrismTextLayout.shape(PrismTextLayout.java:832)
at com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1062)
at com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:221)
at com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:244)
at com.sun.javafx.scene.control.skin.Utils.computeTextHeight(Utils.java:129)
at com.sun.javafx.scene.control.skin.LabeledSkinBase.computePrefHeight(LabeledSkinBase.java:832)
at javafx.scene.control.Control.computePrefHeight(Control.java:543)
at javafx.scene.Parent.prefHeight(Parent.java:918)
at javafx.scene.layout.Region.prefHeight(Region.java:1438)
at com.sun.javafx.scene.control.skin.TableRowSkinBase.computePrefHeight(TableRowSkinBase.java:544)
at javafx.scene.control.Control.computePrefHeight(Control.java:543)
at javafx.scene.Parent.prefHeight(Parent.java:924)
at javafx.scene.layout.Region.prefHeight(Region.java:1438)
at com.sun.javafx.scene.control.skin.VirtualFlow.resizeCellSize(VirtualFlow.java:1782)
at com.sun.javafx.scene.control.skin.VirtualFlow.addTrailingCells(VirtualFlow.java:1212)
at com.sun.javafx.scene.control.skin.VirtualFlow.layoutChildren(VirtualFlow.java:1102)
at javafx.scene.Parent.layout(Parent.java:1076)
at javafx.scene.Parent.layout(Parent.java:1082)
at javafx.scene.Parent.layout(Parent.java:1082)
at javafx.scene.Scene.doLayoutPass(Scene.java:576)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2386)
at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:321)
at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:319)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:319)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:348)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:479)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:460)
at com.sun.javafx.tk.quantum.QuantumToolkit$13.run(QuantumToolkit.java:327)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
at java.lang.Thread.run(Thread.java:745)
어떻게 이런 종류의 스크램블 된 문자열이 표시 될 수 있습니까?
@FXML
protected void loadFile()
{
allScrambledVotes.clear();
HashTable hashTable = new HashTable(txtPath.getText());
LinkList[] allVotes = hashTable.getArray();
Scrambler scrambler = new Scrambler();
int k = 0;
for (LinkList vote : allVotes)
{
for (int j = 0; j < vote.getSize(); j++)
{
Vote v = vote.findVote(j);
scrambler.put(k, v);
allScrambledVotes.add(scrambler.get(k));
System.out.println(allScrambledVotes.get(k));
k++;
}
}
table.setItems(allScrambledVotes);
System.out.println("Hello World");
}
loadFile 메서드가 기억 나지 않습니다. 내 자신의 함수를 사용하여 해시 테이블에서 데이터를로드합니다. 이 오류는 Hello World sysout 이후에 발생합니다.
안녕하세요, 감사 대신
의 라인을 따라
시도 뭔가의
여기에 완벽한 예입니다. 그러나 이것은 작동하지 않습니다. 다른 아이디어? 나는 StringBuffer, StringBuilder 및 SimpleStringproperty를 시도했다. – Freewister
"작동하지 않음"은 전혀 도움이되지 않습니다. 어떻게 작동하지 않습니까? 그것은 컴파일합니까? 예외가 있습니까? 나는 완전한 예제 (어느 것이 효과가 있는가?)로 대답을 업데이트했다. –
안녕하세요, 작동합니다! 고맙습니다 =). 그리고 전에 오류. 코드 줄을 잊어 버린 것 같습니다. – Freewister