我怎样才能有一个JTable,列和行都有标题?
这样的事情:
+------+------+------+------+
|/\/\/\| col1 | col2 | col3 |
+------+------+------+------+
| row1 | | | |
+------+------+------+------+
| row2 | | | |
+------+------+------+------+
| row3 | | | |
+------+------+------+------+
Run Code Online (Sandbox Code Playgroud)
谢谢
在滚动时,有一些关于JScrollPane中类似故障的主题:
但他们缺乏SSCCE和案件的一些解释,所以我将添加缺少的东西.
首先,这是一个在纯Swing上编写的小例子,没有使用第三方代码:
public class ScrollGlitchExample extends JFrame
{
public ScrollGlitchExample () throws HeadlessException
{
super ();
final JPanel top = new JPanel ();
top.setPreferredSize ( new Dimension ( 300, 50 ) );
top.setBorder ( BorderFactory.createLineBorder ( Color.BLACK ) );
add ( top, BorderLayout.NORTH );
final JPanel panel = new JPanel ( new GridLayout ( 500, 1 ) );
for ( int i = 0; i < 500; i++ )
{
panel.add ( new JButton ( …Run Code Online (Sandbox Code Playgroud) 我想创建一个交互式JTable.为此,我想在表格的单元格中添加JPanels.一旦JPanels进入单元格,我就可以将各种组件添加到JPanels中,从而使表格具有交互性.每个JPanel可以有不同的组件.是否可以实现此目的,只需要创建1个表格单元格编辑器和1个表格单元格投标器.有谁知道更好的方法吗?
谢谢
编辑:感谢您的回复.我实际上已经有了一个我正在使用的框架.我只需要一个用户可以拖放图像,播放电影,显示图形等的JTable ......我已经具备了执行这些功能的功能,我只需要一个JPanel来添加它们.我希望它显示在JTable中,以便可以对单元格进行排序,移动,添加/删除行/列,以及结构良好.我无法使用JTable工作,所以我继续创建自己的.它只是一个JPanel,它包含使用GridLayout的较小的JPanel(表格单元格).它适用于我的目的.从表头上重写所有功能只是一种痛苦.
我正在尝试创建一个有两个窗格的UI.
在左侧窗格中,我显示文件列表,右窗格显示内容.
现在,我希望左窗格中的文件列表看起来像普通列表.但是,当我单击此列表中的条目时,特定文件的内容应显示在右侧窗格中.
如何使用Swing实现这一目标?
我有一个问题,我无法摆脱.
你知道,我对使用JTables相当新,所以答案可能很简单,但我找不到解决方案:/
所以,我有一个使用AbstractTableModel的JTable,它覆盖了
public Class<?> getColumnClass(int columnIndex_p)
Run Code Online (Sandbox Code Playgroud)
方法,告诉要显示的每列的类型.其中一个是布尔值.
当我创建一个简单的JTable时,使用
table_l = new JTable(new MyTableModel());
Run Code Online (Sandbox Code Playgroud)
一切都很好,并使用复选框(开/关)正确显示布尔值.
现在,我想将文本集中在每个单元格上(以后可能会有更多选项).
所以我为每一列定义了一个新的DefaultTableCellRenderer,如下所示:
DefaultTableCellRenderer cellRenderer_l = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// delegate the rendering part to the default renderer (am i right ???)
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
return comp;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我只需将此CellRender的水平对齐设置为:
cellRenderer_l.setHorizontalAlignment(JLabel.CENTER);
Run Code Online (Sandbox Code Playgroud)
然后我在JTable的每一列上安装这个新的CellRenderer:
for (int i = 0; i < table_l.getColumnCount(); ++i) {
table_l.getColumnModel().getColumn(i).setCellRenderer(cellRenderer_l);
}
Run Code Online (Sandbox Code Playgroud)
但是,使用新的CellRenderer,显示的JTable不再使用我的TableModel的getColumnClass()方法,因此只在布尔值上显示"true/false"字符串. …
在java swing tablemodel中,我们可以触发表更改,添加,删除等.我想知道如果组件不可见,这些方法调用是否很昂贵?
例如,另一个窗口覆盖它.或者它处于非活动选项卡中.
我正在尝试使用 using 创建一些数据的缩略图图表JScrollPane,但遇到性能困难。此示例有大约 100 个缩略图,每个缩略图有 5000 个样本。当我尝试向下滚动并返回向上多次时,滚动会出现延迟,CPU 负载增加,应用程序内存使用量达到超过 500 Mb。
有没有办法在不减少数据的情况下避免此性能问题?
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ThermometerPlot;
import org.jfree.data.general.DefaultValueDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class ThumbnailChartsTest extends JPanel {
private static final int W = 200;
private static final int H = W;
private static final int N = 5000;
private static final Random random = new Random();
private static …Run Code Online (Sandbox Code Playgroud) java ×7
swing ×7
jtable ×3
jscrollpane ×2
jfreechart ×1
jlist ×1
jtree ×1
list ×1
renderer ×1
tablemodel ×1
thumbnails ×1