- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
向 JList 模型添加元素会出现奇怪的行为。调用 addElement() 方法时,列表会变成空白,添加巨大的空元素,或者将新元素向下移动几行。对这些方法的另一次调用将其返回,并包含问题之前和之后的所有元素,包括由“不稳定”调用添加的项目。首先,它似乎是绘画问题,仅重绘调用没有帮助,只有添加新元素才能纠正问题。
添加部分元素后会出现问题,不同的启动涉及相同的索引。从未见过它很快就在第一个索引上失败。
package r;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
public class R extends javax.swing.JFrame {
ServerSocket serverport;
/**
* Creates new form R
*/
public R() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
scrollDebug = new javax.swing.JScrollPane();
debugList = new javax.swing.JList();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Debug");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
scrollDebug.setAutoscrolls(true);
debugList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
scrollDebug.setViewportView(debugList);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scrollDebug, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 682, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scrollDebug, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
);
pack();
setLocationRelativeTo(null);
}// </editor-fold>
private void formWindowOpened(java.awt.event.WindowEvent evt) {
new Thread() {
@Override
public void run() {
try {
serverport = new ServerSocket(33002, 0, InetAddress.getLoopbackAddress());
debugList.setModel(new DefaultListModel());
while (R.this.isVisible()) {
new ClientConnection(serverport.accept()).start();
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Error opening server port", "Debug", JOptionPane.ERROR_MESSAGE);
}
}
}.start();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(R.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(R.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(R.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(R.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new R().setVisible(true);
}
});
}
class ClientConnection extends Thread {
Socket connection;
public ClientConnection(Socket connection){
this.connection=connection;
}
@Override
public void run() {
try {
connection.getOutputStream().write(String.format("debug>").getBytes());
connection.getOutputStream().flush();
String response = "";
do {
response += (char) connection.getInputStream().read();
} while (!response.endsWith(System.lineSeparator()));
response = response.replace(System.lineSeparator(), "");
((DefaultListModel) debugList.getModel()).addElement(response);
if (((DefaultListModel) debugList.getModel()).getSize() > 0) {
//debugList.ensureIndexIsVisible(((DefaultListModel) debugList.getModel()).getSize() - 1);
debugList.setSelectedIndex(((DefaultListModel) debugList.getModel()).getSize() - 1);
scrollDebug.getVerticalScrollBar().setValue(scrollDebug.getVerticalScrollBar().getMaximum());
}
connection.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Error receiving connection", "Debug", JOptionPane.ERROR_MESSAGE);
}
}
}
// Variables declaration - do not modify
private javax.swing.JList debugList;
private javax.swing.JScrollPane scrollDebug;
// End of variables declaration
}
现已添加完整的示例代码。给您带来不便,敬请谅解!
最佳答案
This one is inner class of the frame used to create new threads receiving data and adding string to JList.
Swing 组件需要在事件调度线程上更新,因此您无法直接在线程中更新组件。
因此,您可以将更新模型的代码包装在 SwingUtilities.invokeLater(...)
或者,您可以使用 SwingWorker
并在结果可用时“发布”结果,而不是使用单独的线程。
阅读 Swing 教程中关于 Concurrency 的部分有关这些概念和工作示例的更多信息。
关于Java JList 模型 addElement() 破坏了列表的视觉表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928315/
我正在尝试创建我的第一个列表,但遇到错误。 这是我用于列表模型的模板: private ListModel getListModel() { String[] arrayOfStrin
我有一个作业: implement a linked list of String objects by use of the class Node (see Big >Java Early Obje
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
我正在处理一项作业,并尝试将一个元素添加到 LinkedList 中。第一个代码块已给出,不应更改。第二 block 是根据教授给我们的UML写的,位于另一个类(class)。 import java
向 JList 模型添加元素会出现奇怪的行为。调用 addElement() 方法时,列表会变成空白,添加巨大的空元素,或者将新元素向下移动几行。对这些方法的另一次调用将其返回,并包含问题之前和之后的
我在 Java 项目中使用 Firebase,我添加了一个监听器来查询数据,然后将元素添加到 DefaultListModel,但 JList 仅删除旧项目并且不显示新数据。 我的JList user
我的 Java Swing 应用程序中有一个 JList,当用户单击一个按钮时,列表会清除并且内容会重置如下: public void reset(ArrayList content) { l
本文整理了Java中bibliothek.util.xml.XElement.addElement()方法的一些代码示例,展示了XElement.addElement()的具体用法。这些代码示例主要来
本文整理了Java中org.xmlpull.v1.builder.XmlElement.addElement()方法的一些代码示例,展示了XmlElement.addElement()的具体用法。这些
我正在尝试将这部分存储在变量中,以便我可以使用取消按钮..(使用java、netbeans) String a = list.addElement(JOptionPane.showInputDialo
使用 Adobe Flash Builder 4.0 吗? 使用 addChild() 时出错。编译器建议使用 addElement()。这两个功能是否相互交替?还是像 addChild 已被弃用
我正在为组件设计类(class)实现一个程序,目前正在努力解决 Jlist 的简单使用问题。该程序绘制形状,并应将它们显示在框架的 BorderLayout.West 的 ScrollPane 中的
我在尝试使用 DefaultListModel 将从数据库加载的 POJO 输出到 JList 时遇到一个有趣的问题。简而言之,这是我的代码: // load POJO objects
我是 Zend 的新手,我接到了一个要对其进行调整的项目。我想将 html 添加到我的表单元素的标签中,但我似乎做对了。 这是我所拥有的: $this->addElement('text', 'sch
请解释Vector.add() 方法和Vector.addElement() 方法之间的区别,并提供示例代码片段 最佳答案 add() 来自 List 接口(interface),它是 Java 1.
虽然我知道 Java Vectors 的使用不被鼓励,因为它已被弃用,但我仍然坚持使用遗留代码,而我没有能力修改它。 我在尝试向 Vector 添加元素时遇到 OutOfMemoryError 错误。
此示例中的两个 Jtable 显示了我面临的挑战。简单地说,一个表是主表,第二个表取决于主表数据。主表包含第 3 列为 boolean 值的数据,第二个表的目的只是显示第 3 列为 true 的所有数
我是一名优秀的程序员,十分优秀!