如何在java中创建一个JButton,不可见但可点击?
button.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
使按钮不可见,但不可点击,是否有任何方法使其不可见,但可点击?
我试过做:
button.setVisible(false);
button.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)
但那也不起作用.我想这样做是因为我想要一个带图像的按钮,如果我将不可见的JButton放在图像上,按钮会在你点击图像时响应,或者是隐形按钮.
当我使用以下代码下载文件时,它只是将文件写入本地目标,但文件大小都为零.有人可以说为什么会发生这种情况以及如何解决这个问题?
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.io.FileOutputStream;
import java.io.IOException;
public class FtpDownload {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileOutputStream fos = null;
String filename = "config.zip";
try {
client.connect("ftpsrv");
client.login("user", "user");
for (FTPFile file : client.listFiles()) {
filename = "C:\\tmp\\user\\" + file.getName();
if (file.isFile()) {
fos = new FileOutputStream(filename);
client.retrieveFile(filename, fos);
System.out.println(file.getName());
} else if (file.isDirectory()) {
System.out.println("directory: " + file.getName());
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try …Run Code Online (Sandbox Code Playgroud) 我有一个现有的界面,其中有一个用于显示pdf文件的JPanel.
在此界面中显示pdf并且不打开新窗口非常重要.如果可能的话,如何在不使用不必要的代码(库)的情况下在JPanel上显示pdf?
我已经实现了ListSelectionListener,如下所示,因此在选择第一个表中的特定行之后,第二个表会相应地更新.
class SelectionListener implements ListSelectionListener {
public SelectionListener(){}
@Override
public void valueChanged(ListSelectionEvent e)
{
if (e.getSource() == myTrumpsAndMessages.jTable1.getSelectionModel()
&& myTrumpsAndMessages.jTable1.getRowSelectionAllowed()
&& e.getValueIsAdjusting())
{
int selected = myTrumpsAndMessages.jTable1.getSelectedRow();
clearjTable(jTable4);
showSubscribers(selected);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在鼠标选择时调用监听器,还有从键盘选择的时候?
我能够使JFrame完全透明,JButton部分透明,直到我在按钮上移动鼠标(不要单击)并从按钮移开鼠标(通过MouseListener调用MouseExited).会发生什么是JButton的背景再次被绘制,所以在按钮上打开和关闭几个鼠标后,按钮完全不透明.
public class ButtonExample extends JWindow
{
public ButtonExample( )
{
JButton But = new JButton( "Testing" );
But.setBackground( new Color( 0, 0, 0, 200 ) );
But.setForeground( new Color( 70, 155, 255 ) );
this.add( But );
this.setBackground( new Color( 0, 0, 0, 0 ) );
this.setMinimumSize( new Dimension( 200,100 ) );
this.setVisible( true );
}
public static void main( String[ ] Args )
{
new ButtonExample( );
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个基于OSGi的桌面应用程序.我有一个Swing JFrame,我想添加添加模块(其他包)的可能性.我在JSig教程中浏览了EclipseZone OSGi,但每个应用程序都是从OSGi Framework(在本例中为Knopflerfish OSGi Desktop)启动的.
所以我的问题是,是否有一个选项可以在没有可见的OSGi框架的情况下启动应用程序?我知道,从代码中,可以更改bundle的属性,但是如何以这种方式更改框架的属性?(例如,默认捆绑存储位置,捆绑在位置时的默认操作等?)
public class MainFrame extends ServiceTracker implements BundleActivator {
public MainFrame(BundleContext context, JToolBar toolBar) {
// select, which services is the bundle tracking
super(context, JMenu.class.getName(), null);
}
@Override
public void start(BundleContext context) throws Exception {
//display a JFrame
}
@Override
public void stop(BundleContext context) throws Exception {
//hide a JFrame
}
@Override
public Object addingService(ServiceReference reference) {
// Process a Service and return a JMenu
return new JMenu();
}
@Override …Run Code Online (Sandbox Code Playgroud) public class MyPanel extends JPanel implements KeyListener {
private char c = 'e';
public MyPanel() {
this.setPreferredSize(new Dimension(500,500));
addKeyListener(this);
}
public void paintComponent(Graphics g) {
super.repaint();
g.drawString("the key that pressed is" + c, 250,250);
}
public void keyPressed(KeyEvent e) {
c=e.getKeyChar();
repaint();
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
c=e.getKeyChar();
repaint();
}
public static void main(String[] s) {
JFrame f=new JFrame();
f.getContentPane().add(new MyPanel());
f.pack();
f.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试阅读这个但没有管理以了解如何简单地实现KeyListener.那么我需要改变什么呢?
我有一个对象 - ArrayList<User> users包含一些用户对象.
public class User
{
int id;
String name;
String location;
}
Run Code Online (Sandbox Code Playgroud)
我想把这个ArrayList放在一个JList中,这样它就会显示用户名 -
John
Mick
Sam
Joe
Run Code Online (Sandbox Code Playgroud)
---当我选择一个用户名时,会触发一个事件,让我使用相应的User对象执行某些操作.所以有人点击'Mick',我得到这样的代码(伪代码) -
public jListClicked(User user)
{
int id = user.id;
String name = user.name;
String location = user.location;
updateDatabase(id, name, location);
}
Run Code Online (Sandbox Code Playgroud)
我认为这可以使用JList ?? 毕竟我想象这就是为JList组件创建的.那么如何将一个像ArrayList这样的对象添加到JList中,以便我具备上述功能呢?
我正在尝试使用Swing,并决定专注于将JList与Objects的arraylist结合使用.
我想创建一个显示空白JList的程序,当按下按钮时,它会显示arraylist的内容,并允许单个选择打印出所选的内容.
我当前的代码完成了上述所有操作,但是当我单击JList上的单个条目时,它会将其打印两次.我觉得这是一个简单的错误,很容易纠正,但我一直在阅读它,我的大脑已停止合作.
任何帮助将不胜感激.提前致谢 :)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.event.*;
public class textarea {
ArrayList <Pet> petList = new ArrayList <Pet> ();
DefaultListModel model = new DefaultListModel();
JList list = new JList();
public static void main (String [] args){
textarea gui = new textarea();
gui.go();
}
public void go(){
petList.add(new Pet("Lucy","Dog",5));
petList.add(new Pet("Geoff","Cat",2));
petList.add(new Pet("Hammond","Hamster",1));
model = new DefaultListModel();
for(Pet p:petList){
model.addElement(p.toString());
}
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton button …Run Code Online (Sandbox Code Playgroud) 如何在Java中创建TCP套接字?
如何创建这样的TCP连接只有在我告诉它时它才会终止,否则它会保持打开状态?
如何使用Keepalive来了解服务器或客户端是否仍然可用?
请帮忙!