我有一个JPanel
(黄色)放入JScrollPane
.
当我输入一些文本时JTextPane
,它会调整大小,但垂直滚动条仍然不活动.yelowPanel.getSize()
返回与之前相同的值.(您可以在redPanel上看到它).
那我怎么刷新yellowPanel
?我想垂直滚动面板.我试过了:
panelCreating.revalidate();
panelCreating.invalidate();
panelCreating.repaint();
Run Code Online (Sandbox Code Playgroud)
仅适用,panelCreating.setPreferredSize(new Dimension(333, 777));
但我不知道要设置的大小.这取决于内容.
有一个小例子:
package swingtest;
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 javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
public class SwingTest extends JFrame {
public SwingTest() {
initComponents();
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new SwingTest().setVisible(true);
}
});
} …
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法,使用Java Swing,在我的工作站上显示Java系统属性名称和值?
基本上,我正在寻找的是一个Java Swing应用程序,它显示如下:
我想创建一个包含Hashtable of String和object的条目的JList:
Hashtable<String,Object>
Run Code Online (Sandbox Code Playgroud)
JList元素应该包含哈希表条目并显示作为字符串的条目键的值...
可能吗 ?怎么做到呢 ?
我有一个hashMap,我希望它的数据可以在JTable中查看我怎么会遇到hashMap数量的列和行以及要显示的数据.我有一个hashmap,它以一个accountID作为键和一个学生的对象,其中每个学生都有他们的数据,如姓名,身份,年龄等,无论如何引用JTable文档,它说我需要整数行和列和一个类型为Object的多维数组.我该怎么做?我可以将hashMap更改为multidimenion数组吗?
- 编辑我已经编辑了我的问题所以它可以更清楚,我是相当新的Java我真的没有得到你们发布的内容,特别是因为我正在做的工作与OO有很大关系并且掌握OO概念是我最大的挑战,
/ 我有一个dataStorage类,注册用户使用其用户名的Key输入添加到HashMap,即getUser./
import java.util.*;
public class DataStorage
{
HashMap<String, Student> students = new HashMap<String, Student>();
HashMap<String, Staff> staffMembers = new HashMap<String, Staff>();
//Default constructor
public DataStorage(){
}
public void addStaffMember(Staff aAcc)
{
staffMembers.put(aAcc.getUser(),aAcc);
}
public void addStudentMember(Student aAcc)
{
students.put(aAcc.getUser(),aAcc);
}
public Staff getStaffMember(String user)
{
return staffMembers.get(user);
}
public Student getStudent(String user)
{
return students.get(user);
}
public int getStudentRows()
{
return students.size();
}
}
Run Code Online (Sandbox Code Playgroud)
/****这是一个扩展账号的学生班级***/
public class Student extends Account {
private String studentNRIC;
private …
Run Code Online (Sandbox Code Playgroud) 我想在JTable中灰化不可编辑的单元格.我正在使用这样的TableCellRenderer:
TableColumn column = table.getColumnModel().getColumn(0);
column.setCellRenderer(new GrayableCheckboxCellRenderer());
public class GrayableCheckboxCellRenderer extends JCheckBox implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int vRowIndex, int vColIndex) {
boolean editable = isEditable(vRowIndex, vColIndex);
setBackground(editable ? UIManager.getColor("Label.background") : Color.LIGHT_GRAY);
setSelected((Boolean) value);
if (isSelected) {
// TODO: cell (and perhaps other cells) are selected, need to highlight it
}
return this;
}
// perfomance
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName, boolean oldValue, boolean …
Run Code Online (Sandbox Code Playgroud) 当我尝试从java中的表中删除行时,我遇到了一些问题.特别是,我使用DefaultTableModel
,当我尝试删除行时,使用该removeRow(int row)
方法,最后一行被删除,无论是什么row
.例如,假设我们有六行.当removeRow(0)
或removeRow(2)
或removeRow(5)
叫,最后一行是始终去除.任何想法,为什么会这样?
谢谢
---更新
当按下jtable的特定单元格时,应移除相应的行.
class TagsTableMA extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e){
Point p = e.getPoint();
int row = tagsJT.rowAtPoint(p);
int column = tagsJT.columnAtPoint(p);
if (column == COLUMN_DELETE_TAG){
DocDialog docDialog = new DocDialog(parentMainJF,
true,
null,
"Please confirm...",
"Are you sure you want to delete the \"" +
tagsJT.getValueAt(row, COLUMN_TAG_NAME) +
"\" tag?",
DocDialog.TYPE_YES_NO);
docDialog.show();
int answer = docDialog.getAnswer();
if (answer == DocDialog.YES)
model.removeRow(row);
}
} …
Run Code Online (Sandbox Code Playgroud) 嗨,
我创建了我的TableModel,并希望在添加新行后刷新JTable.应该添加什么来监听"刷新"JTable?
public class MyTableModel implements TableModel {
private Set<TableModelListener> listeners = new HashSet<TableModelListener>();
//List<Staff> staffs = Factory.getInstance().getStaffDAO().getAllStaff();
private List<Staff> staffs;
public MyTableModel(List<Staff> staffs){
this.staffs = staffs;
}
@Override
public int getRowCount() {
return staffs.size();
}
@Override
public int getColumnCount() {
return 5;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex){
case 0:
return "First Name";
case 1:
return "Second Name";
case 2:
return "Date";
case 3:
return "Position";
case 4:
return "Salary";
}
return "";
}
@Override
public …
Run Code Online (Sandbox Code Playgroud) 它看起来像JTable
构造喜欢String[][]
...但我喜欢使用更智能的容器,直到我必须使用其他东西.一直在使用ArrayList<ArrayList<String>>
,现在我需要JTable
开心String[][]
.
我找到了一种简单的方法来转换ArrayList<String>
为String[]
使用toArray()
,但没有找到多维数组的简易转换器.
我想从去ArrayList<ArrayList<String>>
到String[][]
的行数最少的.
我一直在搜索图书馆,似乎无法找到这个转换器,并希望有人可以建议一个很好的解决方案.
提前致谢.
我在使用 Java 和 Swing 时遇到了一些内存问题。我有一个JTextArea
(与 相同的问题JTextPane
),用于从 C++ 可执行文件重定向标准输出。而且因为我输出了很多标准输出,JTextPane
所以消耗了大量空间。无论如何,我将其归结为以下代码,全部使用 Java。
private javax.swing.JTextArea jtextareastdout;
....
for (int i = 0; i < 200000; i++) {
String randomstr = UUID.randomUUID().toString();
jtextareastdout.setText(randomstr); //<tag_memory>
if (i % 100 == 0)
System.gc(); //<tag_no_help>
}
Run Code Online (Sandbox Code Playgroud)
以上代码占用100MB。注释掉 tag_memory 行后,少了很多(我的所有其他代码和 UI 为 30MB)。如何减少 Java 的内存使用量?当前使用 Java 7 更新 4。
提前致谢。
我创建了一个包含JTable的简单GUI.可以通过适当的对象流保存和加载该表.
此时Save函数按预期工作,我可以看到在查找save目录时表对象存储在文件中.
但是,当我尝试从文件加载表时,GUI从不显示加载的表.调用actionlistener函数,因为我有一个system.out"数据已加载",但该表从不显示更新的数据.
我试图调用repaint(),但无济于事.对于那些能够解释我可能做错的事情的人,我将非常感激.
看一些代码
import javax.swing.*;
import java.awt.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.imageio.*;
import java.io.*;
import java.awt.image.BufferedImage;
import java.util.*;
import javax.swing.table.*;
import java.awt.event.*;
public class Save3 extends JFrame implements ActionListener{
public int PADDING = 10;
public JMenuItem menuNew;
public JMenuItem menuOpen;
public JMenuItem menuSave;
public JMenuItem menuExit;
public JPanel container;
public DefaultTableModel model;
public JScrollPane scrollPane;
public JTable table;
public FileInputStream fis;
public ObjectInputStream in;
public FileOutputStream fos;
public ObjectOutputStream out;
public String filename;
public Save3(){
fis = null;
in …
Run Code Online (Sandbox Code Playgroud)