Tag: swing

Java:删除DefaultTableModel的所有行

我想删除DefaultTable的所有行。我发现两种常见的方法来删除它们在互联网上,但没有一个在我的情况下工作,因为这些方法不存在于我的DefaultTableModel。我想知道为什么:S。我使用DefaultTableModel的代码是 DefaultTableModel Table =(DefaultTableModel)Table.getModel(); 一种方法是删除 Table.removeRow(Table.getRowCount() – 1); 但是这个removerow方法在我的DefaultTableModel中不存在。 请帮我一下

如果使用java满足某些条件,如何设置颜色到某一行?

我有一个Jtable。 (tablesummary)。 其中一列是EXPIRY。 我想突出显示与当前date已失效的客户端的行。 我已经得到了逻辑,但我不能使行变成红色或任何其他颜色。 这是我的代码: int count = (tableSummary.getRowCount()); NumberFormat formatter = new DecimalFormat("###,###"); String no = formatter.format(count); txtNo.setText(no); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); String expDateString = sdf.format(cal.getTime()).toString(); for(int i=0; i<=tableSummary.getRowCount()-1; i++){ String nnn= tableSummary.getModel().getValueAt(i, 6).toString(); System.out.println(nnn); int res = nnn.compareTo(expDateString); if(res>=0){ System.out.println("if ni " + (res>=0)); } else{ System.out.println("else […]

removeAll在下次validation时不会删除?

有人可以解释为什么以下不能如我所料? 按下button'should'将导致只包含(空的)JScrollPane的显示,即input栏和button应该消失。 然而,他们留下来,直到组件被resize… public static void main(String[] args) { JFrame frame = new JFrame("test"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); final JPanel panel = new JPanel(); Container cp = frame.getContentPane(); cp.setLayout(new FlowLayout()); cp.add(new JScrollPane(panel)); Component textField = new JTextField("i am input"); JButton button = new JButton(new AbstractAction("i am pressy") { @Override public void actionPerformed(ActionEvent e) { // this is already […]

如何更改JTabbedPane的背景颜色?

我知道你可以修改LaF的属性 ,但是你怎样才能做到这一点? 我只问,因为setBackground似乎没有做到这一点。 请注意,我正在更改以下属性: TabbedPane.background (或TabbedPane.contentAreaColor ?) TabbedPane.tabAreaBackground

将自定义对象从JList拖放到JLabel中

我有一个JList包含自定义对象的ArrayList,我试图创build一个拖放到字段。 我无法理解如何在Transferable中打包和接收对象。 这是关于我已经得到的: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; public class FlightProjectInterface extends JFrame{ //create GUI Objects private JFrame primaryFrame; private JPanel createFlightPanel; private JPanel aircraftLayout; private JList personsJList, personsOnFlightJList; private JTextField pilotLabel, coPilotLabel, backseat1Label, backseat2Label; public FlightProjectInterface(){ //establish frame super("Create Flight"); setLayout( new FlowLayout()); //aircraftPanel aircraftLayout = new JPanel(); aircraftLayout.setLayout(new […]

JFrame背景图像

我正在创build一个GUI,虽然很简单,但我想要一个背景图像(2048 X 2048)填充整个窗口,并在左上angular放置一个正方形,偶尔可以加载64 X 64图像。 在此先感谢任何人帮助:)编辑:我已经知道如何使JFrame设置大小,它的图像加载我需要帮助。

我怎样才能改变JComboBox中的箭头样式

假设我想在JComboBox中使用自定义图像作为箭头,我该怎么做? 我知道这是可能的使用合成XML文件,甚至可能是UIManager.put(…),但我不知道如何。 我现在想要做的就是将箭头图像更改为其他内容,无论是以编程方式还是仅仅覆盖其使用的图像。 我到底该怎么做?

旋转BufferedImage实例

我无法获得旋转的BufferedImage显示。 我认为旋转工作正常,但我实际上不能将其绘制到屏幕上。 我的代码: Class extends JPanel { BufferedImage img; int rotation = 0; public void paintComponent(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); img2d = img.createGraphics(); img2d.rotate(Math.toRadians(rotation), img.getWidth() / 2, img.getHeight() / 2); g.drawImage(img, imgx, imgy, null); this.repaint(); } } 这不适合我。 我找不到任何方法将旋转的img2d绘制到g 。 编辑:我有多个被绘制到g上的对象,所以我不能旋转。 我需要能够单独旋转的东西。

如何限制JFileChooser目录?

我想限制我的用户到一个目录及其子目录,但“父目录”button允许他们浏览到任意目录。 我应该怎么做呢?

Java:如何在Swing中实现双缓冲?

编辑两个 为了防止snarky注释和单行答案错过了这一点: IFF就像调用setDoubleBuffered(true)一样简单,那么如何访问当前的离线缓冲区,以便我可以开始搞乱BufferedImage的底层像素databuffer? 我花时间写了一段代码(看起来还挺有趣的),所以我真的很感激答案,实际回答(这是多么令人震惊),我的问题和解释什么/这是如何工作,而不是单线和snarky注释 ;) 这里有一段代码在JFrame上反弹一个正方形。 我想知道可以用来转换这段代码的各种方式,以便它使用双缓冲。 请注意,我清除屏幕并重新绘制正方形的方式并不是最有效的方法,但实际上并不是这个问题的关键所在(从某种意义上说,这个例子有点慢)。 基本上,我需要不断地修改BufferedImage中的很多像素(因为有某种animation),而且我不想看到由于在屏幕上单缓冲而造成的视觉伪影。 我有一个JLabel,它的Icon是一个包装了BufferedImage的ImageIcon。 我想修改那个BufferedImage。 必须做些什么才能变成双缓冲? 我明白,不知何故“图像1”将显示,而我将在“图像2”上绘制。 但是一旦我完成了“图像2”的绘制,我该如何“快速”将“图像1”replace为“图像2” ? 这是我应该手动做的,就像通过自己交换JLabel的ImageIcon一样? 我应该总是在同一个BufferedImage中绘图,然后在JLabel的ImageIcon的BufferedImage中做一个BufferedImage像素的快速“blit”? (我猜不是,我不知道怎样才能使它与显示器的“垂直空白线”同步[或者与平板显示器相当:我的意思是,在不干扰显示器本身刷新的情况下“同步”像素,以防止剪切])。 那么“重绘”命令呢? 我想自己触发这些吗? 哪个/什么时候我应该打电话repaint()或别的什么? 最重要的要求是我应该直接在图像的像素databuffer中修改像素。 import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; public class DemosDoubleBuffering extends JFrame { private static final int WIDTH = 600; private static final int HEIGHT = 400; int xs = […]